无法自动装配xxxx类型的Bean问题记录及总结

引言

之前有碰到这个问题大概四五次但是没记录下来…今天写demo的时候又遇到这类问题花了两个小时。看了看网上博客很多都是掩耳盗铃取消设置的做法…故此记录总结下来分享

在这里插入图片描述

一、装配的类上没有加注解

装配的类上应有 @Component@Service@Repository …等注解
如:

@Repository
public class CustomerDAO {
    
    

    @Value("${data.class}")
    private  String tempClass;

    public String getTempClass() {
    
    
        return tempClass;
    }

    public void addCustomers(){
    
    
        System.out.println(tempClass);
        // 转化的数据类型为Excel
        try {
    
    
            System.out.println(tempClass);
            Class<?> classType=Class.forName(tempClass);
            try {
    
    
                DataConvertor dataConvertor = (DataConvertor) classType.newInstance();
                dataConvertor.readFile();
            } catch (InstantiationException | IllegalAccessException e) {
    
    
                log.debug("方法或构造器没有权限");
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
    
    
            log.debug("相应的类未找到");
            e.printStackTrace();
        }
    }
}

二、启动类的路径不对

启动类应与所在装配类的实体包的目录在同父级目录下如:
在这里插入图片描述
装配CustomeerDao类的所在的实体类包entity父级目录edu与启动类同属于example的包下:
在这里插入图片描述

如果实在不确定目录是否正确可以多试试几次,看是否是这个问题。

三、未扫描到这个Bean

配置一个config类,设置扫描路径就行:
路径:
在这里插入图片描述
配置类代码:

@Configuration
@ComponentScan(basePackages = {
    
    "com.example.edu"})
public class knowledgereviewConfig {
    
    

}

四、测试时未装配到

如果你是用Springboot,junit单元测试,测试类上应
有@RunWith(SpringRunner.class)、@SpringBootTest
注解
如:

@RunWith(SpringRunner.class)
@SpringBootTest
class KnowledgeReviewApplicationTests {
    
    

    @Autowired
    CustomerDAO customerDAO;

    @Test
    public void LSPTest(){
    
    
        EmailSender emailSender = new EmailSender();
        VIPCustommer vipCustommer = new VIPCustommer();
        emailSender.send(vipCustommer);
    }

    @Test
    public void DIPTest(){
    
    
        customerDAO.addCustomers();
    }

}

五、注意装配的类是否正确

这次写demo就是两个类同名,虽然配置好了,但是引入错了…所以一定要看好是否引入的类是否正确,再去寻找配置问题。

猜你喜欢

转载自blog.csdn.net/weixin_45938441/article/details/120221344
今日推荐