码迷,mamicode.com
首页 > 编程语言 > 详细

springboot注解@Value总是报Could not resolve placeholder的问题

时间:2018-08-23 02:04:31      阅读:1302      评论:0      收藏:0      [点我收藏+]

标签:根据   spl   扫描   顺序   .config   问题   内容   ppi   pat   

场景:

两个配置文件:db.properties,application.properties

在数据库配置里面引用db.properties

<bean id="propertyPlaceholderConfigurer" class="...">
        <property name="locations">
            <list>
                <value>classpath*:/db.properties</value>
                <value>file:/etc/db.properties</value>
            </list>
        </property>
    </bean>

这时候,application.properties里面的属性就不会被加载进去了,如果你使用@Value,就会报Could not resolve placeholder

@Controller
public class FirstController {
    
    @Value("${welcome.message}")
    private String test;

    @RequestMapping("/getw")
    public String welcome(Map<String, Object> model) {
        //model.put("message", this.message);
        System.out.println(test);
        return "my";
    }

}

这样使用就会报Could not resolve placeholder

 

解决:

把db.properties的内容放到application.properties,然后这边引用:

<bean id="propertyPlaceholderConfigurer" class="...">
        <property name="locations">
            <list>
                <value>classpath*:/application.properties</value>
                <value>file:/etc/application.properties</value>
            </list>
        </property>
    </bean>

或者两个文件都加载

<bean id="propertyPlaceholderConfigurer" class="...">
        <property name="locations">
            <list>
                <value>classpath*:/application.properties</value>
                <value>classpath*:/db.properties</value>
                <value>file:/etc/application.properties</value>
            </list>
        </property>
    </bean>

原因是spring的加载机制:Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的Bean就会停止对剩余PropertyPlaceholderConfigurer的扫描(Spring 3.1已经使用PropertySourcesPlaceholderConfigurer替代PropertyPlaceholderConfigurer了),所以根据加载的顺序,配置的第二个property-placeholder就被没有被spring加载,所以在使用@Value注入的时候占位符就解析不了

springboot注解@Value总是报Could not resolve placeholder的问题

标签:根据   spl   扫描   顺序   .config   问题   内容   ppi   pat   

原文地址:https://www.cnblogs.com/tiramisuyj/p/9521211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!