加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在Spring框架中使用@Import和@ImportResource注释有什么

发布时间:2020-12-15 04:25:22 所属栏目:Java 来源:网络整理
导读:我正在攻读 Spring Core认证,我怀疑与@import和@importresource注释的使用有关. 例如,我有一个名为RootConfig.java的配置类,这个: @Configuration@Import({AppConfig.class,DbConfig.class})@ImportResource("classpath:/config/security-config.xml")@Enab
我正在攻读 Spring Core认证,我怀疑与@import和@importresource注释的使用有关.

例如,我有一个名为RootConfig.java的配置类,这个:

@Configuration
@Import({AppConfig.class,DbConfig.class})
@ImportResource("classpath:/config/security-config.xml")
@EnableTransactionManagement
public class RootConfig {

}

所以我知道在这个例子中:

@Import({AppConfig.class,DbConfig.class})

正在导入另外两个配置类(类似于将这些配置包含在我的RootConfig.java配置类所代表的主配置中).

Ant我明白了:

@ImportResource("classpath:/config/security-config.xml")

正在导入XML文件.

所以我的疑问是:为什么存在2个不同的注释,它们执行非常相似的任务?为什么不使用单个注释来导入配置类和资源(例如xml文件或属性文件?)

这只是一个语义差异还是还有其他什么?

解决方法

@ImportResource旨在用于以Java为中心的配置上下文.文档说,

In applications where @Configuration classes are the primary mechanism
for configuring the container,it will still likely be necessary to
use at least some XML. In these scenarios,simply use @ImportResource
and define only as much XML as is needed. Doing so achieves a
“Java-centric” approach to configuring the container and keeps XML to
a bare minimum.

一个重要的方面是,当使用@ImportResource XML配置时,您可以使用@Bean批注覆盖以Java为中心的配置.这意味着您可以覆盖配置(通过更改配置XML)而不会影响代码.这个语义为您提供了一个可以考虑使用@ImportResource的上下文,并且在我看来它是一个非常有价值的资产,因为对于以Java为中心的配置最常见的批评之一是它需要重新编译代码.

第二个上下文提供了逐步从XML中心迁移到以Java为中心的配置的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读