我在我的应用程序中使用spring,我有一个.properties文件,其中定义了一些值。
在java类中有一个String值:
@Value("${test}")
public String value;
关键是如果我在bean定义中注入这个值:
<bean id="customClass" class="package.customClass.CustomClassImpl">
<property name="value" value="${test}"></property>
</bean>
它工作正常,但是如果我使用@Value
,总是有一个null
...为什么会发生这种情况?
不,我没有做任何“new
“,没有示例化“customClass
“,我用context.getBean("customClass)
得到它。
**EDIT:**我已在上下文中配置了属性占位符:
<bean id="properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config.properties</value>
<value>classpath:constants.properties</value>
</list>
</property>
</bean>
先谢了。
4条答案
按热度按时间vxqlmq5t1#
请记住,您的类需要一个原型注解,如
@Component
或@Service
jyztefdp2#
如果您正在创建spring Boot 应用程序,并且您的目标是通过(application).properties提供配置参数,则有一种方法可以在不显式声明@Value的情况下完成此操作。
使用注解@ConfigurationProperties(“一些.前缀”)创建您的类属性:
将定义的属性添加到(应用程序)。properties:
然后,在您的应用程序中,您可以自动连接所需的属性...
...并像使用任何其他属性一样使用它们:
5uzkadbs3#
解决,您需要在配置文件中启用注解配置:第一个月
zpf6vheq4#
您需要使用@PropertySource声明.properties文件。不确定使用xml config是否可行。
另外,你确定这个“$",在这个例子中是“#”:http://forum.spring.io/forum/spring-projects/container/61645-value-and-propertyplaceholderconfigurer