问题排查ContextLoader
项目启动时,日志报错:
ERROR org.springframework.web.context.ContextLoader - Context initialization failedorg.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'driverClassName' defined in null: Could not resolve placeholder 'driverClassName' in string value "${driverClassName}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'elasticsearch_cluster_nodes' in string value "${elasticsearch_cluster_nodes}" at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:211) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.processProperties(PropertyPlaceholderConfigurer.java:222) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:86) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
排查过程
1.根据日志提示找不到数据源字段的具体值,数据源的相关配置是放在.properties文件中的,但是Spring在加载相关bean的时候,没有找到这些值。
2.使用PropertyPlaceholderConfigurer将数据源配置文件加载进来。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file:#{systemProperties['db.properties']}</value>
</list>
</property>
<property name="order" value="0" />
</bean>