TS-*_*TS- 56 java spring spring-properties
之前我曾经在其他项目中工作,我只是重新做同样的事情,但由于某种原因,它不起作用.Spring @Value
不是从属性文件中读取,而是从字面上理解值
AppConfig.java
@Component
public class AppConfig
{
@Value("${key.value1}")
private String value;
public String getValue()
{
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
applicationContext.xml中:
<context:component-scan
base-package="com.test.config" />
<context:annotation-config />
<bean id="appConfigProperties"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:appconfig.properties" />
</bean>
Run Code Online (Sandbox Code Playgroud)
appconfig.properties
key.value1=test value 1
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有:
@Autowired
private AppConfig appConfig;
Run Code Online (Sandbox Code Playgroud)
应用程序启动很好,但是当我这样做
appConfig.getValue()
Run Code Online (Sandbox Code Playgroud)
它返回
${key.value1}
Run Code Online (Sandbox Code Playgroud)
它不会解析为属性文件中的值.
思考?
Sac*_*ngh 59
我也发现原因@value
不起作用,@value
需要PropertySourcesPlaceholderConfigurer
代替一个PropertyPlaceholderConfigurer
.我做了相同的更改,它对我有用,我使用的是Spring 4.0.3版本.我在配置文件中使用下面的代码配置了这个 -
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
Run Code Online (Sandbox Code Playgroud)
TS-*_*TS- 17
问题是由于我的applicationContext.xml和spring-servlet.xml中的问题 - 它是bean之间的范围问题.
pedjaradenkovic向我指出了一个现有的资源: @Controller类中的Spring @Value注释没有评估属性文件中的值, 而Spring 3.0.5没有从属性中评估@Value注释
Nar*_*pai 11
就我而言,我缺少花括号。我有@Value("foo.bar") String value
而不是正确的形式@Value("${foo.bar}") String value
对于 Sprig-boot 用户,PropertyPlaceholderConfigurer 和 Spring 3.1 中添加的新 PropertySourcesPlaceholderConfigurer。所以访问属性文件很简单。只需注入
注意:确保您的财产不得 Static
@Value("${key.value1}")
private String value;
Run Code Online (Sandbox Code Playgroud)
小智 5
@Value 有时可能需要一天或半天才能解决;)。
这是我所做的:
将属性添加到属性或 YAML 文件
确保主类用 @EnableAutoConfiguration 或 @SpringBootApplication 注解
创建可以在其中使用 @Value 的 AppConfig
@Value("${PROPERTY}") 私有字符串 URL;
在类级别使用 @Configuration 注释此 AppConfig
示例:在某些服务中@Autowired private AppConfig appConfig;并在此服务的方法中调用 appConfig.getUrl() 从属性文件中获取属性 URL 的值。
注意:不要尝试在服务构造函数中获取值,它将为空。
归档时间: |
|
查看次数: |
110259 次 |
最近记录: |