通过Spring Config扫描Spring Data存储库?

18

我正在尝试在一个小型独立应用程序中同时使用Spring Data和Spring配置。

...
  public static void main( String[] args )
  {        
    ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
    ... 
  }
1. 我的问题是如何在不使用<context:component-scan>的情况下发现Spring数据存储库。
<jpa:repositories base-package="foo.repositories" />

通过Spring配置文件实现吗?

2. 如果不行,我可不可以在某种情况下同时使用 'ClassPathXmlApplicationContext' 和 'AnnotationConfigApplicationContext' ?

4个回答

72
你现在可以使用注释 @EnableJpaRepositories("some.root.package")
例如:
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories("some.root.package")
@ComponentScan(basePackages = { "maybe.another.root.package" })
public class SystemConfiguration {
    ...
}

(Spring Data's announcement)

(Spring Data发布了一则公告)


这是现在的正确答案。感谢您的帮助! - cspin

4

为了完整起见并回答您的第二个问题:是的,您可以结合使用Java和XML配置。这样,您就不必等待下一个Spring Data JPA版本发布。

只需使用ImportResource注释您的配置类,就像这样:

@Configuration
@ImportResource("classpath:jpa-config.xml")
public class AppConfig {
    ...
}

2

这篇回答现在已经过时了。

目前还没有与<jpa:repositories … />等效的内容。可以跟踪相应的JIRA票据。该功能将是即将发布的JPA模块(1.1)和MongoDB(1.1)的重要功能。


1

我认为你应该看一下 context:component-scan。

<context:component-scan base-package="com.myProject"/>

它可以自动检测使用@Repository/@Service/@Component注释的组件。请在这里查看。


在Spring Data上下文中,使用@Repository注释来标注“public interface Repository<T, ID extends Serializable>”接口。无论如何,感谢您的帮助和时间。 - cscsaba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接