spring 引导:无法自动装配 bean,但 bean 已确定定义
spring boot: unable to autowire bean, but the bean is defined for sure
我写了一个小的 spring 引导程序,需要使用 jdbcTemplate 连接到数据库。 JDBC 驱动程序存在,我在 application.properties:
中设置了所有内容
spring.datasource.url=jdbc:oracle:thin:@servername:1521:foo
spring.datasource.username=guesswho
spring.datasource.password=iwonttell
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
当我通过打开 localhost:8080/beans 让 spring 引导执行器显示 bean 时,我可以看到我的 class 需要 bean ...
1:Object
bean:"mybean"
scope:"singleton"
type:"de...."
resource:"file [C:/....class]"
dependencies:Array[1]
0:"jdbcTemplate"
...我可以看到 bean 已定义:
56:Object
bean:"jdbcTemplate"
scope:"singleton"
type:"org.springframework.jdbc.core.JdbcTemplate"
resource:"class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$JdbcTemplateConfiguration.class]"
dependencies:Array[0]
这是我的代码,它显示了我尝试过的所有三种自动装配变体,但都不起作用
public class myBean implements IMyBean {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
public myBean(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Autowired
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public foo searchDb(String for) {
String sql = "SELECT bar FROM ...";
jdbcTemplate.query( sql, ...
最后一行 jdbcTemplate.query 出现 NPE。
我想我只见树木不见阿甘。我检查了 Whosebug 提供的建议答案(例如 spring-boot properties not @Autowired),但我认为它们不符合我的问题。衷心感谢帮助...
问题是由一个被遗忘的注释引起的:@AutoWired 丢失了,因此我有两个实例。一个配置正确并包含 jdbcTemplate,另一个具有空 jdbcTemplate。
我检查了第一个,但没有使用。
我写了一个小的 spring 引导程序,需要使用 jdbcTemplate 连接到数据库。 JDBC 驱动程序存在,我在 application.properties:
中设置了所有内容spring.datasource.url=jdbc:oracle:thin:@servername:1521:foo
spring.datasource.username=guesswho
spring.datasource.password=iwonttell
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
当我通过打开 localhost:8080/beans 让 spring 引导执行器显示 bean 时,我可以看到我的 class 需要 bean ...
1:Object
bean:"mybean"
scope:"singleton"
type:"de...."
resource:"file [C:/....class]"
dependencies:Array[1]
0:"jdbcTemplate"
...我可以看到 bean 已定义:
56:Object
bean:"jdbcTemplate"
scope:"singleton"
type:"org.springframework.jdbc.core.JdbcTemplate"
resource:"class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$JdbcTemplateConfiguration.class]"
dependencies:Array[0]
这是我的代码,它显示了我尝试过的所有三种自动装配变体,但都不起作用
public class myBean implements IMyBean {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
public myBean(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Autowired
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public foo searchDb(String for) {
String sql = "SELECT bar FROM ...";
jdbcTemplate.query( sql, ...
最后一行 jdbcTemplate.query 出现 NPE。
我想我只见树木不见阿甘。我检查了 Whosebug 提供的建议答案(例如 spring-boot properties not @Autowired),但我认为它们不符合我的问题。衷心感谢帮助...
问题是由一个被遗忘的注释引起的:@AutoWired 丢失了,因此我有两个实例。一个配置正确并包含 jdbcTemplate,另一个具有空 jdbcTemplate。 我检查了第一个,但没有使用。