Spring MVC为什么调用@Value属性时我的属性为null

时间:2019-01-15 03:25:25

标签: spring-mvc

我的代码如下:

public class BgpService{
  @Value("${serviceName}")
  private String serviceName;
  private String fullName = serviceName+"/rest" 
}

我的config.properties文件中确实有serviceName,值是serviceName = 10.1.1.1,但是当我使用fullName时,值是null/rest,我希望它应该是10.1.1.1/rest

2 个答案:

答案 0 :(得分:0)

您的“ BgpService”类是否被视为Spring bean?您上方是否有任何Spring注释(例如@Service或@Component)?此类是否在“组件扫描”范围内?属性仅由Spring注入到Spring bean。

您可以从另一个类的配置文件访问其他属性吗?这将显示您的属性文件是否在类路径中。

答案 1 :(得分:0)

需要检查并修复代码中的所有内容。

  1. 在您的给定代码段中,您缺少@Component&@Configuration&@PropertySource批注

    @Component 
    @Configuration
    @PropertySource("classpath:config.properties")
    public class BgpService{}
    
  2. 您正试图在静态级别(类)上分配/使用serviceName字段的值,因此需要将字段serviceName定义为静态。

    @Value("${serviceName}")
    private static String serviceName;
    
  3. 并添加后构造方法,以便将值分配给另一个字段。目前,您的初始化无效。

    @PostConstruct
    public void init(){
      fullName = serviceName+"/rest"
    }