我刚接触Spring,看到了这种从属性文件中解析方法参数的方法...
public void setUserDetails(@Value("${user.first.name}")String userName,
@Value("${user.address}") String address) {
this.userName = userName;
this.address = address;
}
但是每当我调用此函数时,值就会被传递给函数的值所代替。我想知道如何调用该函数,以便从属性文件中获取值。
我正在调用类似...的函数
setUserDetails("abc","xyz")
setUserDetails("abc",null)
setUserDetails(null,"xyz")
setUserDetails(null,null)
setUserDetails(null) // invalid
setUserDetails() // invalid
每次我得到的都不是属性数据提供的。请帮我找到一些解决方案或一些参考链接,可能会有所帮助...
答案 0 :(得分:1)
如https://stackoverflow.com/a/21769581/679240所述,该注释不会干扰方法的手动调用;而是在实例化bean之后立即自动调用该方法。
如手册所述:
在构造任何bean之后,调用任何配置方法之前立即注入字段。 [...] Bean属性设置器方法(在这种情况下)实际上只是这种常规config方法的特例。
答案 1 :(得分:1)
Spring注释在bean创建时起作用,而不是在方法调用期间起作用。假设您的班级叫UserDetails
:
@Component
public class UserDetails{
public @Value("${user.first.name}") String userName;
public @Value("${user.address}") String address;
}