我认为我没有正确理解某些内容,因为我的@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();
}
答案 0 :(得分:1)
@Value
注释仅用于将属性值从yml
或properties
文件注入到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