Ну, у меня проблема с настройкой Spring JDBCTemplate для правильной работы. Я пытаюсь ввести источник данных, но кажется, что он всегда нулевой. Вот пример кода:
applicationContext.xml:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="url"
value="jdbc:derby:c:\\Derby\\MyDB\\jsfkickstart;create=true" />
<property name="username" value="admin" />
<property name="password" value="admin" />
</bean>
<bean id="employeeDoa" class="com.kickstart.employeeapp.doa.EmployeeDoa">
<property name="dataSource" ref="dataSource" />
</bean>
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
EmployeeDoa.java
public class EmployeeDoa implements IEmployeeDoa, IDepartmentDoa {
private DataSource dataSource;
public List<Employee> getAllEmployees() {
JdbcTemplate select = new JdbcTemplate(dataSource);
return select.query(
"SELECT "+
"e.ID as empId, "+
"e.FIRSTNAME as empFirstName, "+
"e.LASTNAME as empLastName, "+
"d.ID as depId, "+
"d.NAME as depName, "+
"d.LOCATION as depLocation "+
"FROM jsfkickstart.Employee e, jsfkickstart.Department d",
new EmployeeMapper());
}
}
class EmployeeMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Employee emp = new Employee();
emp.setId(rs.getInt("empId"));
emp.setFirstName(rs.getString("empFirstName"));
emp.setLastName(rs.getString("empLastName"));
Department dep = new Department();
dep.setId(rs.getShort("depId"));
dep.setLocation(rs.getString("depLocation"));
dep.setName(rs.getString("depName"));
emp.setDepartment(dep);
return emp;
}
}
Исключение:
Exception in thread "main" java.lang.IllegalArgumentException: Property 'dataSource' is required
at org.springframework.jdbc.support.JdbcAccessor.afterPropertiesSet(JdbcAccessor.java:134)
at org.springframework.jdbc.core.JdbcTemplate.<init>(JdbcTemplate.java:142)
at com.kickstart.employeeapp.doa.EmployeeDoa.addEmployee(EmployeeDoa.java:29)
Кто-нибудь знает, как я могу решить эту проблему? Если я упустил какую-либо важную информацию в вопросе, пожалуйста, дайте мне знать.
Спасибо.