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

使用@Value访问Spring Boot Actuatorbuild.version属性

万俟光临
2023-03-14

这应该很容易,但不起作用。我在spring boot(2.0.1-RELEASE)应用程序中激活了Spring启动执行器。

执行器endpoint/执行器/info按预期工作,并显示正确的版本信息。文件build-info.properties存在。

尝试使用(例如在我的Spring Controller类中)访问版本属性时:

@Value("${build.version}) private String version;

操作失败,错误无法解析值“${build.version}”中的占位符“build.version”

有什么建议吗?

共有3个答案

孟昆
2023-03-14

在您的@Service中,将@Value作为构造函数的参数放在构造函数中。不要使用独立值并尝试引用它。

喜欢这个:

@Service
public class myService {

  public myService(@Value("${my.param}") String myParam) {
   client.withParam(myParam).build();
  }

}

其中,application.properties的值如下:

my.param=http://google.com

我尝试过其他实现,但它们不起作用。例如

 @Service
 public class myService {

      @Value("${my.param}")
      String myParam;

      public myService() {
       client.withParam(myParam).build();
      }

  }

不起作用。

在这种情况下,服务将被初始化,但字符串将为空。我无法解释。我想这与param构造和bean初始化时间有关。

许振海
2023-03-14

我需要将文件< code > build-info . properties 添加为< code > @ properties source

@SpringBootApplication()
@PropertySource("classpath:META-INF/build-info.properties")
public class MyApp implements WebMvcConfigurer { 
  [...]
}

然后可以在注释中使用构建信息

@SomeAnnotation(value = "${build.version}")
public class someClass { ... }
邢永安
2023-03-14

使用Spring表达式语言,它非常简单干净。

@Value("#{buildProperties.get('version')}")           // not 'build.version'
private String myAppBuildVersion;

或者更好的方法是,将< code > build properties bean直接< code>Autowire到您的组件,这样您就可以随心所欲地使用它了。

@Autowired
private BuildProperties buildProperties;

注意:<code>自动配置</code>会删除<code>构建前缀。因此,<code>SpEL</code>表达式应该使用<code>版本</code>作为键。不是build.version

 类似资料:
  • 问题内容: 因此,我可以使用进行访问,但如何访问? 问题答案: 您可以这样操作:

  • 我正在查询如下所示的帖子: 这将返回product类型的所有post。但我在wooCommerce中创建的产品上有自定义属性,但我似乎在任何地方都找不到这些信息。 我尝试使用: 我还尝试: 当我print_r这些我得到了很多信息但我不能看到的产品属性从WooCommerce任何地方 下图显示了如何在产品上设置此信息。 查询帖子后如何访问此信息?特别是我需要提取的颜色和大小。

  • 问题内容: 我想将一个对象添加到Global范围,并且为了构造它,我需要将其传递到文件的路径。我不想在源代码中对文件路径进行硬编码,因此我想从application.conf中获取该路径。 问题是我不知道如何从java类访问这些属性。我尝试了这个: 但是它以 NullPointerException 结尾。 假设我可以使用一个全局Configuration实例,这是我错了吗?谢谢。 问题答案: 尝

  • 问题内容: 当字符串具有破折号时,我无法从json对象检索值: 如果我尝试引用已解析的文件,它将返回但jsonObj.user_id将返回6789 我没有办法修改外部api调用返回的值,并且试图解析返回的字符串以删除破折号也会破坏传递的url等。救命? 问题答案: 是减法表达式(即)。 要访问包含不能出现在标识符中的字符的键,请使用方括号:

  • 本文向大家介绍浅谈JS使用[ ]来访问对象属性,包括了浅谈JS使用[ ]来访问对象属性的使用技巧和注意事项,需要的朋友参考一下 对象的属性由两种固定的方法来访问:”.”记法和”[ ]“方括号记法: 使用”.”号记法访问标准的对象属性,使用”[ ]“方括号记法访问由页面定义的对象属性。如下 document.forms["myformname"].elements["myinput"].value

  • 问题内容: 我正在尝试使用通过函数传递的变量访问JSON: 显然,这是行不通的,因为“类别”是我通过函数传递的内容,而不是属性的真实名称,但是我一直尝试尝试不同的可能性。提前致谢! 问题答案: 在JS中,是的同义词。 另外,您正在处理的是JavaScript对象,而不是JSON(尽管它可能 起源于 JSON ) *对于遇到这种情况并使用ES6的用户进行 *更新 ,现在可以在分配过程中使用变量: 作