简体   繁体   中英

NullPointerException while accessing an instance of Spring JdbcTemplate

I am trying to use Spring JDBCTemplate class to access database. As a first tutorial, I have used xml spring configuration file and everything works as expected. Now, I am trying to use @Configuration and created DataSource and JdbcTemplate instances through @Bean annotation within this file. But, I get a NullPointerException at int result = template.update(sql);

I am sure I have done a silly mistake. Was wondering what it could be.

The code is as follows.

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


}

}

Application Context needs to be obtained whenever we need to create beans or autowire them.

Since this is Java based configuration, it is retrieved as follows.

ApplicationContext context = new AnnotationConfigApplicationContext(SpringJDBCAnnotation.class);

and the beans needs to be accessed from the context as usual.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM