Spring @Value不加载属性

时间:2017-05-31 13:51:39

标签: java spring properties configuration

我有两个类都使用配置属性。

这个加载

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

2 个答案:

答案 0 :(得分:2)

我可以在AuthHelper类中看到两个问题:

  1. AuthHelper应该是一个Spring托管bean并且有@Component注释。

  2. 字段redirectUrl是静态的,无法注入。解决方案是使字段非静态或

  3. 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();
}