当前位置: 首页 > 知识库问答 >
问题:

如果不能解析属性,带有@value注释的Grails3不会返回null

鲜于温书
2023-03-14

Grails3.2.8应用程序使用src/main/resources文件夹中的application.properties文件,如果底层的spring能够解析属性,它就可以很好地工作。

2017-04-18 15:01:09.957 DEBUG --- [nio-8080-exec-1] o.s.c.e.PropertySourcesPropertyResolver  : Found key 'com.win.test' in [applicationConfig: [classpath:/application.yml]] with type [String]

2017-04-18 15:01:09.957 DEBUG --- [nio-8080-exec-1] o.s.c.e.PropertySourcesPropertyResolver  : Found key 'com.win.test' in [environmentProperties] with type [String]
2017-04-18 15:01:09.956 DEBUG --- [nio-8080-exec-1] o.s.c.e.PropertySourcesPropertyResolver  : Could not find key 'widget.name' in any property source
class TestService {

    @Value('${widget.name}')
    def name
    @Value('${com.win.test}')
    def test

    def serviceMethod() {
        println name
        println test
    }
}
${widget.name}
hello

因此,应该将name解析为null,因为Widget.name不存在于属性文件中,但在本例中,它的值是值注释的表达式。

共有1个答案

柴嘉年
2023-03-14

如果键不存在,可以指定所需的值:

@value('${widget.name:#{NULL}}')def name

 类似资料:
  • 我们一直在使用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,然后

  • 我将selenium与java和以下pom包一起使用, 我可以使用WebDriver和其他对象,但当我试图使用注释@findby时,我的项目似乎找不到满足它的包“不能解析为类型”,也不建议使用selenium包。 selenium的注释系统位于哪个maven存储库中?还是我错过了什么? 谢谢。

  • 我们有一个在Tomcat上运行的应用程序。以下是Tomcat版本信息: 我正在尝试使用jmxproxy获取一些监控信息。但是,当我运行

  • 我定义了自己的JUnit注释: 然后,我能够在测试中使用该注释: null 当我在原型测试方法上方添加时,它将执行,但是: 似乎没有应用我在下定义的注释 IDE建议 (我已经知道意味着,只是不知道为什么IDE能够找到自定义注释,而JUnit不能?)

  • 问题内容: 我将 .properties 文件中的属性注入到 @Value 注释的字段中。但是,此属性提供敏感的凭据,因此我将它们从存储库中删除。我仍然希望在某些情况下想要运行项目并且没有带有默认值将设置为字段的凭据的.properties文件。 问题 即使我将默认值设置为字段本身,当.properties文件不存在时,也会出现异常: 这是带注释的字段: 我希望在这种情况下只设置普通的字符串“ s