@Configuration对JavaConfig类是可选的吗?

时间:2014-06-19 02:21:13

标签: java spring spring-java-config

注意:这个问题也出现在Spring论坛(http://forum.spring.io/forum/spring-projects/container/748870-is-configuration-optional-for-javaconfig-classes)中,但由于这些论坛即将弃用,我鼓励在SOF上发布这个问题,赞成SOF。


我对用于基于Java的Spring配置的Java类有疑问。 Spring文档,JavaDoc以及其他博客和论坛的帖子都有很好的文档记录,这些类应该用@Configuration注释。但是,我想知道的是,实际上是否必须使用@Configuration注释它们。

我正在使用Spring编写REST服务器。我可以通过web.xml引用我的配置类,并且该类能够很好地设置我的Spring应用程序上下文,而不使用@Configuration注释类。与我的测试代码相同:我的所有测试都使用@ContextConfiguration注释,并且可以指向我的JavaConfig类(通过classes属性),即使没有使用@Configuration注释JavaConfig类。我还应该注意,我的JavaConfig类通过@Import注释从其他配置类继承,并且那些下游配置类也没有用@Configuration注释。

这一切都让我产生了一个问题:@Configuration真的只是一个可选属性吗?如果我们有一个XML上下文文件用于通过DI / autowiring查找@Configuration-annotated类以用于Spring上下文配置,我们可能需要它。但对我来说情况并非如此;我不能自动拉入所有使用@Configuration注释的类,因为我的服务器设置和测试设置都有单独的配置。

有人可以确认我对@Configuration是否真的可选的想法?如果是这样,那么这个事实是否应该反映在Spring文档或该注释的JavaDoc中?谢谢。

1 个答案:

答案 0 :(得分:0)

如果你清楚地引用每个配置类(使用web.xmlWebApplicationInitializer@ContextConfiguration<import>@Import)那么是的,注释看起来似乎可选的。

但是当您使用组件扫描时,您可以轻松地将带有@Configuration注释的类添加到组合中,而无需从其他地方引用它们。 如果你有很多配置要做,这真的很方便。

另一个问题是,我很确定如果您没有使用@Configuration注释配置类,那么Spring 4中的@Conditional将无法正常工作