helloWorldUrl = null
Exception in thread "main" java.lang.IllegalArgumentException: URI must not be null
at org.springframework.util.Assert.notNull(Assert.java:115)
at org.springframework.web.util.UriComponentsBuilder.fromUriString(UriComponentsBuilder.java:189)
at org.springframework.web.util.DefaultUriTemplateHandler.initUriComponentsBuilder(DefaultUriTemplateHandler.java:114)
at org.springframework.web.util.DefaultUriTemplateHandler.expandInternal(DefaultUriTemplateHandler.java:103)
at org.springframework.web.util.AbstractUriTemplateHandler.expand(AbstractUriTemplateHandler.java:106)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:612)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:287)
at com.example.HelloWorldClient.main(HelloWorldClient.java:19)
public class HelloWorldClient {
@Value("${rest.uri}")
private static String helloWorldUrl;
public static void main(String[] args) {
System.out.println("helloWorldUrl = " + helloWorldUrl);
String message = new RestTemplate().getForObject(helloWorldUrl, String.class);
System.out.println("message = " + message);
}
}
Application.Properties
rest.uri=http://localhost:8080/hello
您的代码中有几个问题。
>
从你发布的样本来看,Spring似乎还没有开始。main类应该运行main方法中的上下文。
@SpringBootApplication
public class HelloWorldApp {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApp.class, args);
}
}
不可能将值注入到静态字段中。您应该从将其更改为常规类字段开始。
@Component
public class HelloWorldClient {
// ...
}
@SpringBootApplication
public class HelloWorldApp {
// ...
@Bean
public HelloWorldClient helloWorldClient() {
return new HelloWorldClient();
}
}
我想在.properties文件中有一个值列表,即: 并直接加载到我的类中,即: 据我所知,另一种方法是将其放在spring配置文件中,并将其作为bean引用加载(如果我错了,请纠正我),即 但有没有办法做到这一点呢?使用.properties文件?附注:如果可能的话,我想用任何自定义代码来完成这个任务。
问题内容: 我是Spring的新手,尝试使用带注释的控制器内部的注释注入带有值的字符串,并且将字符串的值作为字符串而不是属性文件中的值进行评估。 下面是我要插入的字符串“ message”的控制器。 我的应用程序上下文如下所示: 我的属性文件包含以下行: Spring必须在某个时候获取该值,因为每当我更改为不在属性文件之类的值时,都会出现异常。 问题答案: 似乎已经有人问过这个问题,Spring
Beans文件: 在BaseTest中,当调用)方法时,属性文件中的值起作用,但如果试图将该值用作中的变量,则该值为空。你能帮帮我吗?
这是我的建筑。格雷德尔 因此,restTemplate抛出NullPointerException而不是返回模拟obj。
同时,这起作用: 但我想将属性外部化