NullPointerException при обращении к экземпляру Spring JdbcTemplate - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь использовать класс Spring JDBCTemplate для доступа к базе данных. В качестве первого урока я использовал конфигурационный файл xml spring, и все работает как положено. Теперь я пытаюсь использовать @Configuration и создать DataSource и JdbcTemplate экземпляров с помощью @Bean аннотации в этом файле. Но я получаю исключение NullPointerException в int result = template.update(sql);

Я уверен, что совершил глупую ошибку. Интересно, что бы это могло быть.

Код выглядит следующим образом.

@Configuration
public class SpringJDBCAnnotation {

@Autowired
static JdbcTemplate template;

@Autowired
static DataSource dataSource;

@Bean
DataSource dataSource() {
    DriverManagerDataSource ds = new DriverManagerDataSource();
    ds.setDriverClassName("com.mysql.jdbc.Driver");
    ds.setUrl("jdbc:mysql://localhost:3306/organization");
    ds.setUsername("root");
    ds.setPassword("test");
    return ds;
}

@Bean
JdbcTemplate template() {
    JdbcTemplate template = new JdbcTemplate();
    template.setDataSource(dataSource);
    return template;
}

public static void main(String[] args) {

    String sql = "insert into employee values(1, 'Tom', 'Cruise')";
    int result = template.update(sql);
    System.out.println("# of records inserted : " + result);


}

}

1 Ответ

0 голосов
/ 01 сентября 2018

Контекст приложения должен быть получен всякий раз, когда нам нужно создать бины или автоматически связать их.

Поскольку это конфигурация на основе Java, она получается следующим образом.

ApplicationContext context = new AnnotationConfigApplicationContext(SpringJDBCAnnotation.class);

и бины должны быть доступны из контекста как обычно.

JdbcTemplate template = context.getBean(JdbcTemplate.class);
...