我有两个类都使用配置属性。
这个加载
package com.cegeka.campus;
@RestController
@RequestMapping("api/outlook")
public class OutlookController
{
@Value("${frontend.url}")
private String frontendUrl;
.....
}
但是这个返回null:
package com.cegeka.campus;
public class AuthHelper
{
@Value("${backend.authorize.url}")
private static String redirectUrl;
...
}
我们的主要课程如下:
@SpringBootApplication
@ComponentScan("com.cegeka.campus")
@EnableJpaRepositories("com.cegeka.campus")
@EntityScan("com.cegeka.campus")
public class CampusApplication extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(CampusApplication.class, args);
}
}
为什么我不能加载backend.authorize.url? @Value根本就没有注入。
属性文件(application.yml)如下所示:
frontend:
url: http://hi02549:8080/courseka
backend:
authorize:
url: http://hi02549:8080/campus/api/outlook/authorize
答案 0 :(得分:2)
我可以在AuthHelper类中看到两个问题:
AuthHelper应该是一个Spring托管bean并且有@Component
注释。
字段redirectUrl
是静态的,无法注入。解决方案是使字段非静态或
private static String redirectUrl;
@Value("${backend.authorize.url}")
public void setRedirectUrl(String url) {
redirectUrl = url;
}
答案 1 :(得分:0)
添加此方法并重试:
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}