我的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 ;
在上面的课程中,我正在使用自动接线
答案 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和所有回答我问题的用户。