我有一个场景 configuring Spring Security on embedded Jetty如果我使用 JavaConfig 来配置 Jetty 服务器,这似乎有点解决了。
因此,对于大型项目来说,JavaConfig 而不是 XML 可能是更好的选择。但是,XML 命名空间中有一些细节,例如 <context:component-scan />
@Configuration
中不容易获得的设置。
我发现 ApplicationContextAware
荣获@Configuration
类,所以以下是可能的
@Configuration
public class FooConfig implements ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
((AnnotationConfigApplicationContext) applicationContext).scan("org.example");
}
}
另一种选择,即 documented , 是有 @Configuration
类使用 @ImportResource
注释并拉入现有的 XML 文件:
@Configuration
@ImportResource("applicationContext-withComponentScan.xml")
public class BarConfig {}
我想问题是“以这种方式滥用 ApplicationContextAware
是不好的形式,还是真的不是滥用”?这种方法让人感觉有些奇怪,所以如果 Spring 的家伙以某种我没有发现的方式涵盖了这个,我不会感到惊讶。
对于感兴趣的人,问题与使用 @Resource
扫描 Jersey 设置有关。和 @Provider
我宁愿不必手动管理类/XML 配置中的条目的类。
最佳答案
现在 Spring 3.1准备就绪,如果您使用的是 Spring 3.1,则可以安全地使用 @ComponentScan。作为过时的答案之一,它不仅适用于 Spring MVC。您可以按如下方式使用它:
@Configuration
@ComponentScan({"com.foo.bar", "org.foo.bar"})
public class AppConfig{ /** config code */ }
关于java - Spring @Configuration 和 <context :component-scan/>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683771/