我正在学习 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})
正在导入另外 2 个配置类(比如将这些配置包含到我的 RootConfig.java 配置类代表的主配置中。
据我所知, Ant :
@ImportResource("classpath:/config/security-config.xml")
正在导入 XML 文件。
所以我的疑问是:为什么存在 2 个不同的注释来执行非常相似的任务?为什么不使用单个注释来导入配置类和资源(例如 xml 文件或属性文件?)
这只是语义上的区别还是另有原因?
最佳答案
@Import
指示一个或多个要导入的
@Configuration
类。用于导入基于 Java 代码的配置。例如@Configuration @Import({ DataSourceConfig.class, TransactionConfig.class }) public class AppConfig { ... }
查看更多信息 Using the
@Import
annotation .@ImportResource
表示一个或多个包含要导入的 bean 定义的资源。用于导入基于 XML 的配置或其他非
@Configuration
bean 定义资源。例如@Configuration @ImportResource({"classpath:spring-security.xml"}) public class SecurityConfig { ... }
查看更多信息
@Configuration
class-centric use of XML with@ImportResource
.
关于java - Spring框架中@Import和@ImportResource注解的使用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381957/