@Value(“ $ {server.address}”)返回null

时间:2019-08-28 10:59:30

标签: spring-boot

我想做的是,一旦启动我的spring boot应用程序,就在浏览器中打开主页链接。

我有两个配置文件localprod。现在使用local

我正在尝试从属性文件中以@Value("${server.address}") private static String serverAddress;的形式读取服务器地址

,但不知道出了什么问题。

@SpringBootApplication
public class WebWalletApplication {

@Value("${server.port}")
private static String serverPort;

@Value("${server.address}")
private static String serverAddress;

public static void main(String[] args) throws URISyntaxException {
    SpringApplication.run(WebWalletApplication.class, args);
    openHomePage();
}

private static void openHomePage() throws URISyntaxException {
    System.out.println("serverAddress: " + serverAddress);
    String url = "https://" + serverAddress + ":" + serverPort + "/wallet/secure/home";
    URI homepage = new URI(url);

    if (Desktop.isDesktopSupported()) {
        Desktop desktop = Desktop.getDesktop();
        try {
            desktop.browse(homepage);
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec("rundll32 url.dll,FileProtocolHandler " + url);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
}
  1. application.properties

    spring.profiles.active=local

  2. application-local.properties

    server.address=192.168.1.79 server.port=8084

2 个答案:

答案 0 :(得分:1)

让您的类实现static并实现openHomePage()方法来调用{而不是将值注入static字段中并使用CommandLineRunner方法run() {1}}:

openHomePage()

答案 1 :(得分:1)

@Value不适用于静态变量。要解决此问题,您可以创建一个setter方法并使用@Value进行注释,如下所示。

示例:

public static String somefield;

@Value("${property.value}")
public void setSomeField(String value) {
  somefield = value;
}