当前位置: 首页 > 面试题库 >

Spring 3.0.5不评估属性中的@Value注释

伯彦君
2023-03-14
问题内容

尝试在Spring 3.0.5.RELEASE中自动将属性连接到Bean ,我正在使用:

  • config.properties:
username=myusername
  • main-components.xml:
<context:property-placeholder location="classpath:config.properties" />
  • MyClass:
@Service
public class MyClass {

    @Value("${username}")
    private String username;
    ...
}

结果,username被设置为字面值 "${username}",因此表达式不会被解析。我对该类的其他自动关联依赖关系已设置,并且Spring不会引发任何异常。我也尝试添加,@Autowired但没有帮助。

如果我将属性解析为单独的bean,然后使用@Autowired+ @Qualifier,那么它将起作用:

<bean id="username" class="java.lang.String">
    <constructor-arg value="${username}"/>
</bean>

任何想法如何使用只是@Value?也许我需要包括一些我没有的Spring依赖项?谢谢


问题答案:

找到了问题所在。复制/粘贴评论:

你确定<context:property-placeholder>与MyClass bean在同一个应用程序上下文中(not in the parent context)吗?– axtavt

你是对的。我<context:property-placeholder>从定义的上下文转移ContextLoaderListener到servlet上下文。现在,我的值被解析了。非常感谢



 类似资料:
  • 问题内容: 我是Spring的新手,尝试使用带注释的控制器内部的注释注入带有值的字符串,并且将字符串的值作为字符串而不是属性文件中的值进行评估。 下面是我要插入的字符串“ message”的控制器。 我的应用程序上下文如下所示: 我的属性文件包含以下行: Spring必须在某个时候获取该值,因为每当我更改为不在属性文件之类的值时,都会出现异常。 问题答案: 似乎已经有人问过这个问题,Spring

  • 问题内容: 因此,我有一个简单的属性文件,其中包含以下条目: 该属性文件使用加载,该文件引用了上面的属性文件。 我有以下课程,为此,我正在尝试加载这些属性,如下所示: 问题是,并且总是为空…但是在我的控制器中,该值正好被加载。是什么赋予了? 问题答案: 如果通过手动实例化的实例,则不会涉及Spring,因此注释将被忽略。 如果您无法更改代码以使Spring实例化bean(也许使用-scoped b

  • 我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现

  • 我有一个 Spring 注释类 ,其布尔字段为: 这个类被导入到另一个Spring注释类中,如下所示: 在测试用例中通过Spring上下文实例化类时,容器无法将字符串解析为布尔字段<code>mappingsEnabled</code>,我得到: 关于我错过了什么的任何线索?

  • 问题内容: 从属性文件中为最终属性进行Spring注入的一个简单问题。 我有一个属性文件,要在其中存储文件路径。通常,当我使用属性文件时,我会使用类似以下的方法来设置类属性: 然后在我spring.xml我会像这样: 这很好用,很简单,并且使代码简洁美观。但是我不确定在尝试将属性值注入最终类属性时使用的最整洁的模式是什么? 显然是这样的: 不管用。还有另一种方法吗? 问题答案: 将值注入最终字段的

  • 问题内容: 关于从属性文件中为最终属性进行Spring注入的一个简单问题。 我有一个属性文件,要在其中存储文件路径。通常,当我使用属性文件时,我会使用类似以下的方法来设置类属性: 然后在我spring.xml我会像这样: 这样效果很好,很简单,并且使代码更简洁。但是我不确定在尝试将属性值注入最终类属性时使用的最整洁的模式是什么? 显然是这样的: 不管用。还有另一种方法吗? 问题答案: 如果您正在寻