java - Spring框架中@Import和@ImportResource注解的使用有什么区别?

标签 java spring spring-mvc annotations

我正在学习 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/

相关文章:

java - Hibernate和Spring3事务管理注解-配置问题: Hibernate-Exception: No Hibernate Session bound to thread

Java Tor 库 : How to setup Orchid Tor Lib with Java?

java - Spring Security中的自定义表达式

java - java RMI 服务中的通用事务逻辑?

java - Hibernate 缓存和 JdbcTemplate

java - Spring boot HTTP Basic 传递到 JDBC

Spring mvc HandlerMapping VS HandlerAdapter

Spring Data REST 基于用户过滤数据

java - JSP 中调用 session 属性

java - Java中线程间的通信无锁