Trying to create a CRUD application using Spring Boot and PostgreSQL. At startup, it produces the following errors:
Error creating bean with name 'employeeDaoImpl' defined in file [D:\Vladislav Silyuk\Projects\simplewebapp\target\classes\com\way\dao\impl\EmployeeDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required Caused by: java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required AppConfiguration.java:
@Configuration @ComponentScan("com.way.task") @PropertySource("classpath:application.properties") public class AppConfiguration { @Autowired Environment environment; private final String URL = "url"; private final String USER = "postgres"; //private final String DRIVER = "driver"; private final String PASSWORD = "50easY?"; @Bean DataSource dataSource() { DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); driverManagerDataSource.setUrl(environment.getProperty(URL)); driverManagerDataSource.setUsername(environment.getProperty(USER)); driverManagerDataSource.setPassword(environment.getProperty(PASSWORD)); //driverManagerDataSource.setDriverClassName(environment.getProperty(DRIVER)); return driverManagerDataSource; } } application.properties:
server.servlet.context-path=/simplewebapp spring.datasource.url=jdbc:postgresql://localhost:5432/employeesdb spring.datasource.username=postgres spring.datasource.password=password spring.datasource.platform=postgresql EmployeeDaoImpl.java:
public class EmployeeDaoImpl extends JdbcDaoSupport implements EmployeeDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public List<Employee> getAllEmployees() { return jdbcTemplate.query("SELECT * FROM employees", (rs, rowNum) -> { Employee employee = new Employee(); employee.setEmployeeId(rs.getLong("employee_id")); employee.setFirstName(rs.getString("first_name")); employee.setLastName(rs.getString("last_name")); employee.setDepartmentId(rs.getLong("department_id")); employee.setJobTitle(rs.getString("job_title")); /*employee.setGender(rs.get("gender")); employee.setDateOfBirth(rs.getDate("date_of_birth"));*/ return employee; }); } @Override public void addEmployee(Employee employee) { jdbcTemplate.update("INSERT INTO employees(employee_id, first_name, last_name, department_id, job_title/*, gender, date_of_birth*/) VALUES (?, ?, ?, ?, ?/*, ?, ?*/)", employee.getEmployeeId(), employee.getFirstName(), employee.getLastName(), employee.getDepartmentId(), employee.getJobTitle()/*, employee.getGender(), employee.setDateOfBirth()*/); } @Override public void deleteEmployee(Long employeeId) { jdbcTemplate.update("DELETE FROM employees WHERE employee_id = ?", employeeId); } @Override public void updateEmployee(Employee employee) { jdbcTemplate.update("UPDATE employees SET first_name = ?, last_name = ?, department_id = ?, job_title = ?/*, gender = ?, date_of_birth = ?*/ WHERE employee_id = ?", employee.getFirstName(), employee.getLastName(), employee.getDepartmentId(), employee.getJobTitle()/*, employee.getGender(), employee.setDateOfBirth()*/); } }