@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
注释仅用于将属性值从 yml
或 properties
文件
注入 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
问题
我认为我没有正确理解某些东西,因为我的@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
注释仅用于将属性值从 yml
或 properties
文件
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