使用Spring Java配置中的@ Repository样式异常转换

时间:2011-04-21 13:55:10

标签: spring repository

如果我想使用Spring 3的基于Java的配置声明bean,我可以这样做:

@Configuration
public class MyConfiguration {
    @Bean
    public MyRepository myRepository() {
        return new MyJpaRepository();
    }
}

但是,由于我不能在此上下文中使用@Repository注释,如何让Spring执行异常转换?

1 个答案:

答案 0 :(得分:4)

将MyJpaRepository类声明为存储库:

@Repository
public class MyJpaRepository {
  ...
}

通过在Spring配置中设置component-scan元素,确保您的注释可被发现:

<context:component-scan base-package="org.example.repository"/>

由于您不希望根据注释在注释扫描中包含您的存储库,因此可以通过排除所有@Repository注释或您的特定类或包来过滤掉它。文档中有一个例子:

<context:component-scan base-package="org.example.repository">
  <!-- use one or the other of these excludes, or both if you *really* want to -->
  <context:exclude-filter type="regex" expression="*Repository"/>
  <context:exclude-filter type="annotation"
                          expression="org.springframework.stereotype.Repository"/>
</context:component-scan>

Spring 3.0 documentation在3.10节中更详细地描述了这种配置。

通过将您的类配置为存储库,当您在Configuration类中将其作为Bean引出时,它将被指定为一个。