spring 引导中的@Value 不工作。它是从环境对象加载而不是字段注入
@Value in spring boot is not working. It is loading from Environment object but not field injection
环境属性在 application.properties
application.properties
app.mail.allowedDomains=gmail
在class
@Autowired
private Environment env;
@Value("${app.mail.allowedDomains}")
private static String allowedDomainsForMail;
@Value("${app.mail.allowedDomains:nothing}")
private static String allowedDomainsForMail2;
public void printProperties() {
System.out.println("Inside impl");
System.out.println("@Value:\t" + allowedDomainsForMail);
System.out.println("@Value:\t" + allowedDomainsForMail2);
System.out.println("Env:\t" + env.getProperty("app.mail.allowedDomains"));
}
输出
内部实现
@Value: null
@Value: null
Env: gmail
在第二种情况下甚至没有设置 "nothing"(如果找不到则为默认值)。但是从环境中它正在打印
我什至尝试在包的主要 class 中使用 @ConfigurationProperties。
没有成功。
是在每次点击时从 env 文件中获取值,还是在应用程序加载时只加载它?
来自 org.springframework.beans.factory.annotation.Value
的值
Spring 不允许注入静态字段。总的来说,这被认为不是一个好的做法。下面的几个链接可能会帮助您理解原因。
删除静态,应该会进行注入,因为注入了 env Environment
。
Spring不支持静态字段注入。另外@Value注解也不是最佳实践。
最好的方法是使用@ConfigurationProperties 注解并将其与应用程序属性绑定。它将帮助您在单元测试中模拟 Configration Bean,而不是使用反射进行 @Value 注入
环境属性在 application.properties
application.properties
app.mail.allowedDomains=gmail
在class
@Autowired
private Environment env;
@Value("${app.mail.allowedDomains}")
private static String allowedDomainsForMail;
@Value("${app.mail.allowedDomains:nothing}")
private static String allowedDomainsForMail2;
public void printProperties() {
System.out.println("Inside impl");
System.out.println("@Value:\t" + allowedDomainsForMail);
System.out.println("@Value:\t" + allowedDomainsForMail2);
System.out.println("Env:\t" + env.getProperty("app.mail.allowedDomains"));
}
输出
内部实现
@Value: null
@Value: null
Env: gmail
在第二种情况下甚至没有设置 "nothing"(如果找不到则为默认值)。但是从环境中它正在打印
我什至尝试在包的主要 class 中使用 @ConfigurationProperties。
没有成功。
是在每次点击时从 env 文件中获取值,还是在应用程序加载时只加载它?
来自 org.springframework.beans.factory.annotation.Value
的值Spring 不允许注入静态字段。总的来说,这被认为不是一个好的做法。下面的几个链接可能会帮助您理解原因。
删除静态,应该会进行注入,因为注入了 env Environment
。
Spring不支持静态字段注入。另外@Value注解也不是最佳实践。
最好的方法是使用@ConfigurationProperties 注解并将其与应用程序属性绑定。它将帮助您在单元测试中模拟 Configration Bean,而不是使用反射进行 @Value 注入