java - Spring @Configuration 和 <context :component-scan/>

标签 java spring

我有一个场景 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 */ }

这里是文档 http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/context/annotation/ComponentScan.html

关于java - Spring @Configuration 和 <context :component-scan/>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683771/

相关文章:

java - 如何从hibernate auto转移到生产

java - 如何将 Long 列表发送到休息 Controller Spring Boot

java - Spring security AntMatcher 不工作

Spring PropertyPlaceholderConfigurer 不替换占位符

java - 如何让 GRPC 服务器在另一个 Web 服务器(不是 Netty)上运行

java - 在 ViewStub 更改之间滑动

java - 第一个 Android 应用程序 - Google 和 GPS?

java - 编译器错误...昨天运行的?

java - 如何使用 Java Rally API 获取给定缺陷的讨论

spring - Kotlin 编译器返回 : Unresolved reference: springframework in Spring 5. 0