尝试在 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}"
,因此表达式不会被解析。我对此类的其他自动连接依赖项进行了设置,Spring不会抛出任何异常。我还试图添加@Autowired
,但它没有帮助。
如果我将属性解析为单独的bean,然后使用@Autowired
+ @Qualifier
,则可以:
<bean id="username" class="java.lang.String">
<constructor-arg value="${username}"/>
</bean>
任何想法如何仅使用@Value
?也许我需要包含一些我没有的Spring依赖项?谢谢
答案 0 :(得分:20)
发现问题所在。复制/粘贴评论:
您确定在与MyClass bean相同的应用程序上下文中有<context:property-placeholder>
(不在父上下文中)吗? - axtavt
<context:property-placeholder>
从ContextLoaderListener
定义的上下文移动到servlet上下文。现在我的值被解析了。非常感谢! - alex