如何在 spring boot 中自动装配 jdbcTemplate?
How to autowire jdbcTemplate in springboot?
尝试使用 JdbcTemplate 和 SpringBoot 2.1 访问 Oracle 数据库。4.RELEASE,但出现空指针异常
根据 SpringBoot 文档进行了以下尝试,我仍然遇到空指针异常。
@Component
public class DataAccessObject {
private final JdbcTemplate jdbcTemplate;
@Autowired
public DataAccessObject(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// ...
}
getCircleCount()中抛出空指针异常
@Component
public class DataAccessObject {
@Autowired
private JdbcTemplate jdbcTemplate;
public void getCircleCount() {
int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CIRCLE", Integer.class);
System.out.println(count);
}
}
而我在这里得到圈数
@SpringBootApplication
@ComponentScan("org.vinodh.camunda")
public class DatabaseDemoApplication {
public static void main(String[] args) {
SpringApplication.run(DatabaseDemoApplication.class, args);
DataAccessObject dao = new DataAccessObject();
dao.getCircleCount();
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext context) {
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CIRCLE", Integer.class);
System.out.println(count);
return null;
}
}
实际上我不应该在这两个地方都得到计数吗?
在 main 方法中,您自己实例化 DataAccessObject。对象创建中不涉及 Spring,因此自动装配不起作用。
public static void main(String[] args) {
SpringApplication.run(DatabaseDemoApplication.class, args);
DataAccessObject dao = new DataAccessObject();
dao.getCircleCount();
}
试试下面的代码:
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(DatabaseDemoApplication.class, args);
DataAccessObject dao = context.getBean(DataAccessObject.class);
dao.getCircleCount();
}
尝试使用 JdbcTemplate 和 SpringBoot 2.1 访问 Oracle 数据库。4.RELEASE,但出现空指针异常
根据 SpringBoot 文档进行了以下尝试,我仍然遇到空指针异常。
@Component
public class DataAccessObject {
private final JdbcTemplate jdbcTemplate;
@Autowired
public DataAccessObject(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// ...
}
getCircleCount()中抛出空指针异常
@Component
public class DataAccessObject {
@Autowired
private JdbcTemplate jdbcTemplate;
public void getCircleCount() {
int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CIRCLE", Integer.class);
System.out.println(count);
}
}
而我在这里得到圈数
@SpringBootApplication
@ComponentScan("org.vinodh.camunda")
public class DatabaseDemoApplication {
public static void main(String[] args) {
SpringApplication.run(DatabaseDemoApplication.class, args);
DataAccessObject dao = new DataAccessObject();
dao.getCircleCount();
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext context) {
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CIRCLE", Integer.class);
System.out.println(count);
return null;
}
}
实际上我不应该在这两个地方都得到计数吗?
在 main 方法中,您自己实例化 DataAccessObject。对象创建中不涉及 Spring,因此自动装配不起作用。
public static void main(String[] args) {
SpringApplication.run(DatabaseDemoApplication.class, args);
DataAccessObject dao = new DataAccessObject();
dao.getCircleCount();
}
试试下面的代码:
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(DatabaseDemoApplication.class, args);
DataAccessObject dao = context.getBean(DataAccessObject.class);
dao.getCircleCount();
}