java - Spring中通过字段的不满意的依赖错误
问题描述
下面的代码工作正常,但如果我在 OracleConfiguration 类中注释 jdbcTemplateRandomName 方法,我会收到以下错误:-
我试图通过评论 jdbcTemplateRandomName 方法 Error is in BaseDaoImpl 类来了解为什么我会收到错误。
线程“主”org.springframework.beans.factory.UnsatisfiedDependencyException 中的异常:创建名称为“baseDaoImpl”的 bean 时出错:通过字段“jdbcTemplate”表示不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“org.springframework.jdbc.core.JdbcTemplate”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“org.springframework.jdbc.core.JdbcTemplate”类型的合格bean:预计至少有1个有资格作为自动装配候选者的bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
@Component
public class BaseDaoImpl {
@Autowired
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
@Configuration
public class OracleConfiguration {
@Bean
DataSource dataSource() throws SQLException {
OracleDataSource dataSource = new OracleDataSource();
//removed code for brevity setting username,password to datasource
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplateRandomName(DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setResultsMapCaseInsensitive(true);
return jdbcTemplate;
}
public class RolesDaoImpl extends BaseDaoImpl implements RolesDao {
//removed lot of unnecessary code for the question
List<Roles> rolesList = getJdbcTemplate().query(sql,
new BeanPropertyRowMapper<Roles>(Roles.class));
解决方案
如果您注释方法,您将从Spring IoC 配置jdbcTemplateRandomName()
中删除 bean 的声明。JdbcTemplate
所以 Spring 将无法找到合适的对象来填充jdbcTemplate
你的BaseDaoImpl
类的属性
推荐阅读
- python-3.x - 代码显示在系统上正常工作时未在服务器上定义“sql_connection”
- asciidoc - 如何使用 Asciidoctor 获得文字块的行号?
- python - ModuleNotFoundError:没有名为“src”的模块。从没有 sys.path 的另一个目录导入模块并从现有目录执行它们
- javascript - 我在 CytoscapeComponent 中编写的 console.log 的工作次数与我单击 cy 屏幕时单击屏幕上的按钮的次数一样多
- python - 如何模拟在模拟对象上调用的函数,以返回特定值
- php - PHP循环槽文件夹并删除旧文件/空文件夹
- electron - 节点通知程序在生产中不工作 | 我做错了什么?
- reactjs - 我们可以在 React 应用程序中覆盖 webpack DefinePlugin 的变量吗
- node.js - Runtime.HandlerNotFound aws lambda node.js
- css - 如何使用滚动捕捉 CSS 控制/更改动画的速度?