Invalid bean definition with name 'dataSource' defined in class path resource [spring/database/DataSource.xml]

hibernate, java, spring, sql-server

Solution

Instead of `${jdbc.driverClassName}` in your XML, use `${database.driverClassName}`, ie the name of the property used in your `database.properties` file.

Problem

Im trying to create an application that access a sql server database using Spring, Maven and Hibernate. When i try to run the application im getting the following error: ``` Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'dataSource' defined in class path resource [spring/database/DataSource.xml]: Could not resolve placeholder 'jdbc.driverClassName' ``` Here are my classes DataSoucre.xml ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>/properties/database.properties</value> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> </beans> ``` Hibernate.xml ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- Hibernate session factory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="annotatedClasses"> <list> <value>com.fexco.helloworld.web.model.Customer</value> </list> </property> </bean> </beans> ``` And database.properties ``` database.driverClassName=net.sourceforge.jtds.jdbc.Driver database.url=jdbc:jtds:sqlserver://localhost:1433;databaseName=Customer database.username=***** database.password=***** ``` (I have blocked the username and passwords just for here), i also have a BeanLocation.xml as well but shouldnt really need to post that up. Does anyone know how to solve this, its driving me crazy! Thanks

Original source