java - 初始化服务时URI不是绝对的

标签 java spring spring-mvc spring-boot

我有一个基本的 SpringBoot 2.0.5.RELEASE 应用程序。使用Spring Initializer、JPA、嵌入式Tomcat、Thymeleaf模板引擎,并打包为可执行JAR文件。

我创建了此服务:

@Service
public class WeatherService  {



    @Value(“${weather.url}")
    public static String WEATHER_URL;


    static Double temperature; 


    static {


        temperature = new RestTemplate().getForEntity(WEATHER_URL, Double.class).getBody();



    }

..
}

但是当我启动应用程序时。我收到此错误:

Caused by: java.lang.IllegalArgumentException: URI is not absolute
    at java.net.URI.toURL(URI.java:1088)
    at org.springframework.http.client.SimpleClientHttpRequestFactory.createRequest(SimpleClientHttpRequestFactory.java:145)
    at org.springframework.http.client.support.HttpAccessor.createRequest(HttpAccessor.java:87)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:683)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:644)
    at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:323)
    at com.tdk.backend.service.WeatherService.<clinit>(WeatherService.java:54)
    ... 84 common frames omitted

最佳答案

您不能将值注入(inject)静态变量。

尝试更改为:

public static String WEATHER_URL;

@Value(“${weather.url}")
public void setWehtherUrl(String url) {
    WEATHER_URL= url;
}

关于java - 初始化服务时URI不是绝对的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355720/

相关文章:

java - 如何从 GAE Java 通过代理发送基本的 HTTP GET?

java - 使用 MockMvcstandaloneSetup 时 MockBean 未初始化服务 bean

spring-mvc - 如何找出请求到达错误处理程序的 url?

java - 如何禁用 JavaFX 中的最大化选项?

java - 如何计算一个圆从另一个静态圆反弹的速度方向?

java - 如何在 Calendar 对象中将 String 转换为 dd MMM yyyy 格式

java - Gradle 子项目依赖项不起作用,但相同的依赖项在主 gradle 中工作正常

java - 寻找使用Spring AOP拦截基类继承方法的解决方案

java - Spring数据剩余验证+异常映射器: confusing

java - Spring-MVC、 hibernate : Creating DTO objects from Domain objects