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

时间:2019-05-27 17:52:07

标签: spring-boot properties-file spring-profiles

问题

我认为我没有正确理解某些内容,因为我的@Value始终加载默认值。

Java代码

所以我有以下内容:

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

并且始终将其设置为false。

属性文件 application-disableQuerySecurityDebug.properties

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

我在文件中有以下条目:

disableQuerySecurityDebugMne=true

然后我使用以下配置文件运行该应用程序:disableQuerySecurityDebugMne

我期望将值设置为true,但始终为false。

更新

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

    @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();
    }

1 个答案:

答案 0 :(得分:1)

@Value注释仅用于将属性值从ymlproperties文件注入到Spring Bean中

  

此批注可用于将值注入到Spring管理的Bean中的字段中,并可在字段或构造函数/方法参数级别应用。

如果要基于特定的配置文件注入值,请在类

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

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

  }

您还可以通过使用以下开关在命令行上指定它:

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