Spring JdbcTemplate is null
Пытаюсь написать приложение с использованием Spring, Jdbc и конфигурации через аннотации. Много чего перепробовал, не получается разобраться. Видел https://stackoverflow.com/questions/19896870/why-is-my-spring-autowired-field-null and https://stackoverflow.com/questions/11392692/autowired-in-static-classes. Мне не помогло.
config:
@Configuration
@ComponentScan("ua.com.foxminded.universitygradebook")
@PropertySource(value = "classpath:database.properties")
public class AppConfig {
@Autowired
Environment environment;
private static final String URL = "url";
private static final String USER = "dbuser";
private static final String DRIVER = "driver";
private static final String PASSWORD = "dbpassword";
@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;
}
@Bean
public JdbcTemplate jdbcTemplate() {
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource());
return jdbcTemplate;
}
}
call class:
public class Main {
@Autowired
DisciplineDaoImpl disciplineDao;
public static void main(String[] args) {
Main main = new Main();
main.test();
}
public void test() {
List<Discipline> disciplinces = disciplineDao.getAll();
disciplinces.forEach(discipline -> {
System.out.println(discipline.getName());
});
}
}
В DisciplineDaompl:
@Autowired
private JdbcTemplate jdbcTemplate;
Что не так?
Ответы (1 шт):
Автор решения: Deimont
→ Ссылка
разобрался.
код в классе теста
private static Discipline discipline = new Discipline("Test Discipline");
AnnotationConfigApplicationContext context = new
AnnotationConfigApplicationContext(AppConfig.class);
@Test
void add() {
DisciplineDaoImpl disciplineDao = context.getBean(DisciplineDaoImpl.class);
disciplineDao.add(discipline);
Discipline actual = disciplineDao.getById(discipline.getId());
assertEquals(discipline, actual);
}
после жесткого указания класса конфигурации все заработало.