我使用的是Spring 4。我的配置是:
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:contexts/root/spring-root-context.xml
classpath:contexts/security/security-context.xml</param-value>
</context-param>
spring-root-context.xml
<context:property-placeholder location="classpath:credentials.properties" />
security-context.xml
<beans:bean id="myCustomFilter" class="filters.MyCustomFilter">
<beans:property name="authenticationManager" ref="authenticationManager" />
</beans:bean>
credentials.properties
ClientSecret=qwerty
MyCustomFilter.java
public class MyCustomFilter extends AbstractAuthenticationProcessingFilter {
@Value("${ClientSecret}")
private String clientSecret;
}
属性文件已加载
INFO RMI TCP Connection(3)-127.0.0.1 support.PropertySourcesPlaceholderConfigurer:172 - Loading properties file from class path resource [credentials.properties]
clientSecret的值没有被注入(inject)。
最佳答案
看起来您没有<context:annotation-config>
在你的spring-root-context.xml
.
从另一边,如果配置 MyCustomFilter
作为<bean>
只需使用它的属性:
<beans:bean id="myCustomFilter" class="filters.MyCustomFilter">
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="clientSecret" value="${ClientSecret}" />
</beans:bean>
如果您有setter
当然,为此。
关于java - Spring:属性文件中的值不会 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24573395/