我是 Spring 的新手,并尝试使用 @Value("${loginpage.message}")
注释在控制器内部注入一个带有值的字符串,该控制器用 @Controller
注释进行注释,并且我的字符串的值被评估为字符串 "${loginpage.message}"
而不是我的属性文件中的内容。
下面是我的控制器,其中包含我要注入的字符串“消息”。
@Controller
public 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}")
,我都会收到异常。
原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议
看来这个问题已经被问过了 Spring 3.0.5 doesn’t evaluate @Value annotation from properties
Web 应用程序根目录和 servlet 应用程序上下文之间的区别是 Spring 中最容易混淆的来源之一,请参阅 Spring Framework 中的 applicationContext.xml 和 spring-servlet.xml 之间的区别
来自
@Value
javadoc:来自 Spring 文档: