Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dataSource' defined in URL [file:/D:/uinnova-project/sccba_itm_jdbc/target/classes/spring/spring-dbsource.xml]: Could not resolve placeholder 'project.db.driver' in string value "${project.db.driver}"
at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:209)
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.processProperties(PropertySourcesPlaceholderConfigurer.java:174)
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.postProcessBeanFactory(PropertySourcesPlaceholderConfigurer.java:151)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:662)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.uinv.tarsier.main.ApplicationMain.main(ApplicationMain.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.binary.application.java.JavaApplication.start(JavaApplication.java:72)
... 2 more
原因:
在spring配置文件,只能使用一个<context:property-placeholder >,spring容器是采用扫描反射发现机制,通过标签的命名空间实例化实例,当spring容器中有一个
org.springframework.beans.factory.config.PropertyPlaceCvonfigurer的bean就会停止对剩余PropertyPlaceholderConfigurers扫描,只能存在一个实例。
所以在spring的配置文件中只能有一个<context:property-placeholder >标签,多的话后面不进行扫描