@Value 注释仅加载默认值 - 不使用 属性 文件

@Value annotation is only loading default - not using property file

问题

我认为我没有正确理解某些东西,因为我的@Value 总是加载默认值。

Java代码

所以我有以下内容:

@Value("${disableQuerySecurityDebug:false}")
private boolean disableQuerySecurityDebug;

并且这始终设置为 false。

属性 文件: 应用-disableQuerySecurityDebug.properties

我有一个名为 application-disableQuerySecurityDebug.properties 的属性文件。

我在文件中有以下条目:

disableQuerySecurityDebugMne=true

我 运行 具有以下配置文件的应用程序:disableQuerySecurityDebugMne

我希望值设置为 true,但它总是 false。

更新

根据 deadpool 的回答,我得出以下结论:

    @Profile("disableQuerySecurityDebug") @Data
    @Configuration
    public class DisableSecurityConfig implements DisableQuerySecurityDebug {

        @Value("${disableQuerySecurityDebug:true}")
        private boolean securityDisabled;
    }

    @Profile("!disableQuerySecurityDebug") @Data
    @Configuration
    public class EnableSecurityConfig implements DisableQuerySecurityDebug{

        @Value("${disableQuerySecurityDebug:false}")
        private boolean securityDisabled;
    }

    public interface DisableQuerySecurityDebug{
        public boolean isSecurityDisabled();
    }

@Value 注释仅用于将属性值从 ymlproperties 文件

注入 spring Beans

This annotation can be used for injecting values into fields in Spring-managed beans and it can be applied at the field or constructor/method parameter level.

如果您想根据特定配置文件注入值,请在 class

上使用 @Profile
@Profile("disableQuerySecurityDebug")
@Configuration
public class Config {

 @Value("${disableQuerySecurityDebug:false}")
 private boolean disableQuerySecurityDebug;

  }

您也可以使用以下开关在命令行中指定它:

 java -jar demo.jar  --spring.profiles.active=disableQuerySecurityDebug