如何在Spring项目中调用带有以@Vaule注释修饰的参数的方法?

时间:2019-02-19 03:02:33

标签: java spring spring-boot spring-annotations

当方法中有一个用@Value注释修饰的参数时,当然没有编译错误。就像下面的代码:

public void Sample0(@Value("${hmac.key}") Optional<String> key) {
   if (key.isPresent()) {
         System.out.println(key.get());
    } else {
          System.out.println("can not find key");
    }
 }

我的问题是如何调用这样的函数?我尝试将其称为目录,但失败了。调用函数的代码如下。

@Test
public void sampleTest0() {
     JwtService.Sample0();
}

因此任何人都可以告诉我调用该函数的正确方法是什么?谢谢。

2 个答案:

答案 0 :(得分:0)

我认为这样做的另一种方法是将@Value保存为局部变量,然后将其用于函数中。

答案 1 :(得分:0)

我认为您只能在构造函数中的参数中使用@Value。您的Sample0不是构造函数,而是常规方法,因为它具有返回类型,即void

如果在构造函数参数中使用@Value,则可以自动连接Sample0,spring会在实例化值时注入值。

如果您需要将值传递给常规方法,则可以在调用类的某个字段上使用@Value,然后将该字段作为参数传递给Sample0中的该方法。 / p>