之前也有人问过同样的问题。但是我无法解决这个问题。我面临以下异常:
class MyActivity : ExternalListener {
val externalClass = ExternalClass(this)
override fun printDetails() {
println("printing details from: ".plus(this.javaClass.name))
}
}
interface ExternalListener {
fun externalMethod()
}
class ExternalClass(val listener: ExternalListener) {
fun printResults() {
listener.externalMethod()
}
}
MeasurementNamedParameterJdbcTemplate是使用以下方法创建的:
NoSuchBeanDefinitionException:
No qualifying bean of type
[com.betterknow.connectonce.jdbc.MeasuringNamedParameterJdbcTemplate]
以上部分是在另一个项目(例如B)中,而我正在另一个项目(例如A)中使用maven使用该工件(B)。在A中,我的接线如下:
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() throws Exception {
return new MeasuringNamedParameterJdbcTemplate(datasource());
}
奇怪的是,当我在服务器中部署代码时,它可以正常工作。但是当我从本地运行它时,它没有运行。
完整的堆栈跟踪:
@Autowired
private MeasuringNamedParameterJdbcTemplate jdbcTemplate;
答案 0 :(得分:0)
您的bean类型为NamedParameterJdbcTemplate
:
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() throws Exception {
return new MeasuringNamedParameterJdbcTemplate(datasource());
}
但是您尝试注入类型为MeasuringNamedParameterJdbcTemplate
的bean。
您需要注入NamedParameterJdbcTemplate
类型的bean:
@Autowired // Field injection is not recommended
private NamedParameterJdbcTemplate jdbcTemplate;
或在其定义中将bean类型更改为MeasuringNamedParameterJdbcTemplate
:
@Bean
public MeasuringNamedParameterJdbcTemplate namedParameterJdbcTemplate() throws Exception {
return new MeasuringNamedParameterJdbcTemplate(datasource());
}
奇怪的是,当我在服务器中部署代码时,它可以正常工作。但是当我从本地运行它时,它没有运行。
这真的很奇怪,因为它不起作用,可能是您部署了另一个工件或进行了一些不正确的测试。
答案 1 :(得分:0)
更改
@Autowired
private MeasuringNamedParameterJdbcTemplate jdbcTemplate;
到
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;