无法使用@value或使用自动连线到环境从属性文件中读取值

时间:2019-04-15 07:12:45

标签: java spring spring-boot

我的Spring启动项目中有两个属性文件。而且,我可以在一堂课中同时阅读两者的属性。但是当我尝试使用@Value或通过Autowired Environment从不同的类中读取相同的值时,它为我提供了null。

    prop.name=test /*   property file value */

    @Component
    public class TestUtil { // This is the class giving me null value

        @Value("${prop.name}")
        String st;

        public String getTestString()
        {
            System.out.println(st+ " ***");
            return st;

        }
    }

//Using @Autowired Enviroment
public class TestUtil {

    @Autowired
    private Environment env;


    public String getTestString()
    {
        System.out.println(env.getProperty("prop.name")+ " ***");
        return env.getProperty("prop.name");

    }
}

/* Class below giving me value from properties file*/

        public class JsonWriter extends JsonResponseWriter {

        @Value("${prop.name}")
        private String contentsMenus;

      /* Some method*/
       System.err.println("from JsonWriter  "+contentsMenus);

我在这里自动接线

@Service
public class ResponseUtil {
    @Autowired
     private TestUtil util ;

在上面的课程中,我正在使用自动接线

4 个答案:

答案 0 :(得分:3)

您在Value注释中缺少美元符号。这应该可以完成工作:

@Value("${prop.name}")

答案 1 :(得分:1)

在属性名称中使用$:例如:

@Value("${prop.name}")

答案 2 :(得分:1)

尝试这段代码

@Component
public class TestUtil {

@Autowired
private Environment env;


  public String getTestString(){
    System.out.println(env.getProperty("prop.name")+ " ***");
    return env.getProperty("prop.name");

  }
}

答案 3 :(得分:0)

在M.Deinum进行评论之后,对代码进行了分析,发现我调用另一个类的第一个类没有自动接线,因此在自动装配该类之后它就可以工作了。非常感谢@ M.Deinum和所有回答我问题的用户。