我是Spring新手,尝试在使用@controller
注释的控制器内使用@value(${loginpage.message}”)
注释注入一个字符串,并且我的字符串的值被评估为字符串“${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})
)时,我都会得到一个异常。
您可以@Autowire-Environment
然后环境。getProperty(“名称”)
。看见https://stackoverflow.com/a/15562319/632293
是的,我对Spring3也有同样的问题。它似乎在控制器内部不起作用。为了解决这个问题,我用@Service创建了另一个bean,并将其注入控制器。它确实对我有用。希望这将有助于某人,因为我花了一整天的时间来解决它。
这个问题似乎已经在Spring3.0中提出了。5不从属性计算@Value注释
Web应用根和servlet应用程序上下文之间的差异是Spring中最主要的混淆来源之一,请参阅Spring框架中应用程序ontext.xml和spring-servlet.xml之间的差异
从@Value
javadoc:
请注意,@Value注释的实际处理是由BeanPost处理器执行的
来自Spring文档:
BeanPost处理器接口的作用域为每个容器。这只有在使用容器层次结构时才相关。如果您在一个容器中定义BeanPost处理器,它将只在该容器中的bean上工作。在一个容器中定义的Bean不会被另一个容器中的BeanPost处理器进行后处理,即使两个容器都是同一层次结构的一部分。
问题内容: 我是Spring的新手,尝试使用带注释的控制器内部的注释注入带有值的字符串,并且将字符串的值作为字符串而不是属性文件中的值进行评估。 下面是我要插入的字符串“ message”的控制器。 我的应用程序上下文如下所示: 我的属性文件包含以下行: Spring必须在某个时候获取该值,因为每当我更改为不在属性文件之类的值时,都会出现异常。 问题答案: 似乎已经有人问过这个问题,Spring
我曾在其他项目中工作过,我只是重新做同样的事情,但由于某些原因,它不起作用。Spring不是从属性文件读取,而是从字面上取值 AppConfig.java ApplicationContext.xml: AppConfig.Properties 想法?
问题内容: 尝试在Spring 3.0.5.RELEASE中自动将属性连接到Bean ,我正在使用: config.properties: main-components.xml: MyClass: 结果,username被设置为字面值 ,因此表达式不会被解析。我对该类的其他自动关联依赖关系已设置,并且Spring不会引发任何异常。我也尝试添加,但没有帮助。 如果我将属性解析为单独的bean,然后
我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现
在以下Spring Boot应用程序中,@Value注释在WebSecurityConfig类中成功,但在FileSystemUplad类中没有。在FileSystemUplad类中,值(测试)使用与WebSecurityConfig使用的相同属性文件导致null。 应用.java WebSecurityConfig.java(其中@Value注入工作正常) FileSystemUpload.ja
我有以下课程: 我从控制器调用方法test(): 然而,spring并没有注入构建。版本值,即使类具有组件注释。 我在控制器中使用相同的属性,它工作正常。 我做错了什么?