属性文件为src\main\resources\exam-binary.properties
。 exam-binary.properties中的内容是:
user.post.url=http://localhost:9000/users/newUser
导入类如下所示,但似乎无法导入该值。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.client.RestTemplate;
import com.ma2oo.model.domain.User;
@Configuration
@PropertySource("classpath:exam-binary.properties")
public class RegisterUser {
private static final RestTemplate restTemplate = new RestTemplate();
@Value("${user.post.url}")
private String registerUrl;
public User Register(final User user) {
System.out.println("url print: " + registerUrl);
return restTemplate.postForObject(registerUrl, user, User.class);
}
}
我有@EnableAutoConfiguration
,涵盖所有课程。调用RegisterUser的方法是:
@RequestMapping(value = {"/signUp"}, method = RequestMethod.POST)
public ModelAndView signUp(@ModelAttribute("user") User user) {
new RegisterUser().Register(user);
return new ModelAndView("quiz_start");
}
标准输出是:
url print: null
有人可以帮助解释为什么@PropertySource
不起作用吗?
提前谢谢。
答案 0 :(得分:2)
根本原因是您使用的RegisterUser
实例不是Spring托管bean。相反,你自己创建了
new RegisterUser() // spring has no knowledge of it
为什么这个班级是Configuration
班级?您似乎将其用作服务。将属性配置移动到适当的@Configuration
类,声明类型为RegisterUser
的bean,并在@RequestMapping
带注释的方法中使用该bean。