当前位置: 首页 > 面试题库 >

Spring @Value带注释的方法,在属性不可用时使用默认值

梁俊智
2023-03-14
问题内容

我将 .properties 文件中的属性注入到 @Value
注释的字段中。但是,此属性提供敏感的凭据,因此我将它们从存储库中删除。我仍然希望在某些情况下想要运行项目并且没有带有默认值将设置为字段的凭据的.properties文件。

问题

即使我将默认值设置为字段本身,当.properties文件不存在时,也会出现异常:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxx': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'secret' in string value "${secret}"

这是带注释的字段:

 @Value("${secret}")
 private String ldapSecret = "secret";

我希望在这种情况下只设置普通的字符串“ secret”。


问题答案:

为了准确回答您的问题…

@Value("${secret:secret}")
private String ldapSecret;

为了示例的完整性,下面还有更多变化…

默认字符串为空:

@Value("${secret:#{null}}")
private String secret;

默认数字:

@Value("${someNumber:0}")
private int someNumber;


 类似资料:
  • 我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现

  • 问题内容: 尝试在Spring 3.0.5.RELEASE中自动将属性连接到Bean ,我正在使用: config.properties: main-components.xml: MyClass: 结果,username被设置为字面值 ,因此表达式不会被解析。我对该类的其他自动关联依赖关系已设置,并且Spring不会引发任何异常。我也尝试添加,但没有帮助。 如果我将属性解析为单独的bean,然后

  • 我当前有一个来自属性文件的变量,声明为: 在本例中,我希望在注释中使用,而不是硬编码常量“3”: 这有可能吗? 我试过: 但是我得到以下编译错误:

  • 例如,我有一个bean类 我想设置这个属性的值。 在Xml配置中,我可以 我如何实现同样的事情,即设置属性的值使用Java注释?现在我已经读到,我们可以使用@Value注释使用一些属性文件,但它不能不使用属性文件,做的方式,我通过xml文件?或者使用属性文件是必要的? 我可以通过包含