访问 Spring JdbcTemplate 的实例时出现 NullPointerException
NullPointerException while accessing an instance of Spring JdbcTemplate
我正在尝试使用 Spring JDBCTemplate class 访问数据库。
作为第一个教程,我使用了 xml spring 配置文件,一切都按预期工作。
现在,我正在尝试使用 @Configuration
并通过此文件中的 @Bean
注释创建 DataSource
和 JdbcTemplate
实例。但是,我在 int result = template.update(sql);
处收到 NullPointerException
我确定我犯了一个愚蠢的错误。想知道它可能是什么。
代码如下。
@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);
}
}
每当我们需要创建 bean 或自动装配它们时,都需要获取应用程序上下文。
由于这是基于Java的配置,因此检索如下。
ApplicationContext context = new AnnotationConfigApplicationContext(SpringJDBCAnnotation.class);
并且需要像往常一样从上下文访问 bean。
JdbcTemplate template = context.getBean(JdbcTemplate.class);
我正在尝试使用 Spring JDBCTemplate class 访问数据库。
作为第一个教程,我使用了 xml spring 配置文件,一切都按预期工作。
现在,我正在尝试使用 @Configuration
并通过此文件中的 @Bean
注释创建 DataSource
和 JdbcTemplate
实例。但是,我在 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);
}
}
每当我们需要创建 bean 或自动装配它们时,都需要获取应用程序上下文。
由于这是基于Java的配置,因此检索如下。
ApplicationContext context = new AnnotationConfigApplicationContext(SpringJDBCAnnotation.class);
并且需要像往常一样从上下文访问 bean。
JdbcTemplate template = context.getBean(JdbcTemplate.class);