找不到多个上下文的属性:property-placeholder
我使用带有弹簧轮廓的弹簧3.1来装载豆子。 在我的应用程序上下文文件中,我加载了以下属性:
然后我使用属性值来加载数据源bean
它工作正常。 当我添加几个属性占位符以便可以加载某些数据库表的属性时,问题就开始了。
这使用加载的属性引用
要添加到详细信息,此configFactoryBean
使用datasource
从数据库加载属性。
当我这样做时,我有以下例外:
java.lang.ClassNotFoundException: ${database.driverClassName}
我的分析是它试图在从第一个上下文属性占位符解析属性之前加载datasource
。 我可能错了。 或者可能没有正确解析spring profile变量。
任何人都可以帮我解决这个问题。
谢谢Akki
有关多个属性占位符的错误可能与您的问题有关: https : //jira.spring.io/browse/SPR-9989
将多个
PropertyPlaceholderConfigurer
与@Value
批注和占位符语法的默认值(即${key:defaultValue}
)结合使用时,仅使用第一个PropertyPlaceholderConfigurer
。 如果此配置器不包含所需的值,则即使第二个PropertyPlaceholderConfigurer
包含该值,它也会回@Value
默认值。影响版本:3.1.3
每个
有关详细信息和建议如何处理它,请查看此处: http : //rostislav-matl.blogspot.cz/2013/06/resolving-properties-with-spring.html
在我的应用程序中,我使用property-placeholder configurer以下面的方式,它工作得很好。 你可以试试。
classpath*:META-INF/spring/*_${spring.profiles.active}.properties
我认为这应该可以解决您的问题。 🙂
由于您已建议对配置文件的路径进行硬编码,因此请尝试使用标记上的profiles属性来有选择地包含配置。
请参阅此文章解释配置文件: http : //java.dzone.com/articles/using-spring-profiles-xml
- 我收到无法获得连接,池错误超时等待空闲对象,当我尝试在我的Web应用程序中创建超过250个线程
- 使用Tomcat和gradle进行Hibernate
- 使用EAGER @ElementCollection对find()进行Hibernate LazyInitializationException
- 非托管线程Spring Quartz Websphere Hibernate
- Junit:为删除实体的方法编写测试?
- FetchMode连接对spring JPA存储库中的ManyToMany关系没有任何区别
- 配置hibernate 5.0.1和MySQL时出错
- Hibernate:在存储其更改时evict()一个持久对象
- Hibernate SQL查询结果映射/转换为对象/类/ Bean