当前位置: 首页 > 知识库问答 >
问题:

Spring中通过字段出现未满足的依赖项错误

史修明
2023-03-14

下面的代码运行良好,但是如果我注释OracleConfiguration类中的jdbcTemplateRandomName方法,我会得到以下错误:-

我试图通过注释jdbcTemplateRandomName方法error is in BaseDaoImpl类来理解为什么会得到错误。

线程“main”org.springframework.beans.factory.UnsatisfiedDependencyException中出现异常:创建名为“base daoimpl”的bean时出错:通过字段“jdbc template”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“org.springframework.jdbc.core.jdbcTemplate”类型的合格bean可用:至少需要一个合格的自动候选bean。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}

原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“org.springframework.jdbc.core.jdbcTemplate”类型的合格bean可用:应至少有一个合格的自动候选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));

共有1个答案

余靖
2023-03-14

如果您注释jdbctemplaterandomname()方法,您将从Spring IoC配置中删除jdbctemplatebean的声明。因此Spring将无法找到合适对象来填充BasedAoImpl类的JDBCTemplate属性

 类似资料: