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);
}

после жесткого указания класса конфигурации все заработало.

→ Ссылка