【问题标题】:Quick basic Spring question about @ConditionalOnProperty and @ImportResource关于 @ConditionalOnProperty 和 @ImportResource 的快速基本 Spring 问题
【发布时间】:2020-05-26 04:05:44
【问题描述】:

关于@ConditionalOnProperty 和@ImportResource 注释的使用,我有一个非常基本且快速的问题。

@Configuration
@ConditionalOnProperty(value="module.enabled", havingValue = "true", matchIfMissing = true)
@ImportResource(locations={"classpath:/cnf/myconf.xml"})
public class ConfigA {

}

如果不满足条件(即在属性文件中将 module.enable 属性设置为 false),则不会加载 ConfigA bean,但仍会导入资源 (myconf.xml)。我说的对吗?

无论条件是真还是假,资源都会一直被加载。正确的 ? 感谢您的帮助。

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    当属性不满足条件时,整个Spring Bean都不会被加载,此时@ImportResource根本不会被激活。

    【讨论】:

    • 感谢您的回答。不过你确定吗?
    • 是的,你可以自己试试。只需从类路径中删除(重命名)文件并禁用该属性,它就不会被加载并且不会损害您的应用程序,但是,激活该属性会破坏应用程序,因为该文件将不存在。
    • 谢谢。我完全不确定。我发现我的问题出在 Spring Expression Language 上。我使用了不正确的语法,因此 ConditionalProperty 注释没有任何效果,并且 XML 文件始终通过 ImportResource 注释导入。
    • 没问题,它发生了! :) 你能标记我的答案是正确的吗?提前致谢!
    猜你喜欢
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2021-08-06
    • 2020-02-11
    • 2010-12-12
    • 2011-07-25
    相关资源
    最近更新 更多