我想做的是,一旦启动我的spring boot应用程序,就在浏览器中打开主页链接。
我有两个配置文件local
和prod
。现在使用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();
}
}
}
}
application.properties
spring.profiles.active=local
application-local.properties
server.address=192.168.1.79
server.port=8084
答案 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;
}