@Controller类中的Spring @Value注释无法评估属性文件中的值
我是Spring的新手,尝试使用带@Value("${loginpage.message}")
注释的控制器内部的注释注入带有值的字符串,并且将字符串的值@Controller
作为字符串"${loginpage.message}"
而不是属性文件中的值进行评估。
下面是我要插入的字符串“ message”的控制器。
@Controllerpublic class LoginController extends BaseController {
@Value("${loginpage.message}")
private String message;
@RequestMapping("/")
public String goToLoginPage(Model model) {
model.addAttribute("message", message);
return "/login";
}
}
我的应用程序上下文如下所示:
<context:property-placeholder location="classpath:properties/application.properties" /><context:annotation-config />
<context:component-scan base-package="com.me.application" />
我的属性文件包含以下行:
loginpage.message=this is a test message
Spring必须在某个时候获取该值,因为每当我更改@Value("${loginpage.message}")
为不在属性文件之类的值时@Value("${notInPropertiesFile}")
,都会出现异常。
回答:
似乎已经有人问过这个问题,Spring 3.0.5不会从属性中评估@Value批注
Web应用程序根目录和servlet应用程序上下文之间的差异是Spring造成混淆的最主要原因之一,请参阅 Spring Framework中applicationContext.xml和spring-servlet.xml之间的差异
从@Value
javadoc:
请注意,@ Value批注的实际处理是由BeanPostProcessor执行的
从Spring文档中:
BeanPostProcessor接口是按容器划分作用域的。仅在使用容器层次结构时才有意义。如果在一个容器中定义BeanPostProcessor,它将仅对该容器中的bean进行工作。在一个容器中定义的Bean不会由另一个容器中的BeanPostProcessor进行后处理,即使这两个容器属于同一层次结构也是如此。
以上是 @Controller类中的Spring @Value注释无法评估属性文件中的值 的全部内容, 来源链接: utcz.com/qa/415446.html