问题主要原因:自动装配的问题,创建bean失败,无法找到合适的bean进行自动装配
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImpl': Unsatisfied dependency expressed through field 'userDao'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.heima.dao.UserDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
分模块开发的步骤:
1.创建普通模块,转移想要剥离出去的包==》移包
2.将普通模块进行打包,假如需要依赖的则先添加依赖信息再进行打包==》打包
3.将模块的坐标注入主模块的依赖信息中,然后进行编译测试==》运行
但是有时候测试能通过,服务器运行还是存在问题,此类问题就是一个很好的例子
分模块开发此类问题探究:
既然是分模块开发,假如里面分出的模块中需要用到bean自动装配或者路径时就要格外注意,因为idea里面编写的自动装配的路径是不会根据你所进行的移包或者分模块而自动更改的
本人报错原因:
本人是将实体类包domain和数据层接口包dao进行分模块开发,从主体包剥离出去,然后里面的配置包里面的MybatisConfig中的实体类包扫描的bean和数据层接口扫描的bean都未进行修改,从而导致无法在业务层接口和实现类中进行自动装配,从而导致这个异常的报出
里面还是用的原始位置的包扫描,因为未进行改动而且IDEA不会帮助你自动修改此类路径,所以在原始位置扫描不到正确的bean,无法进行正确装配,所以报错位置才会显示在业务层实现类的UserServiceImpl文件中的自动装配
报错原因解决:
只需要将原始数据根据文件位置变化而进行修改然后运行即可
因为我剥离出去的包是实体类包domain包和数据层接口包dao包,所以我需要修改的数据只有这一个包中创建bean的路径就可以了
假如各位伙伴此类问题还是运行出现不了想要的结果,则可能还需要检查其他包或者jar包是否加载哦