一.org.springframework.beans.factory.UnsatisfiedDependencyException
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘permitHelpController’: Unsatisfied dependency expressed through field ‘rolePageMapService’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘com.inspur.optimus.bsp.feign.role.IRolePageMapService’: FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘com.inspur.optimus.bsp.feign.role.IRolePageMapService’: FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0
1.依赖无法注入异常
通过报错可以发现该异常是permitHelpController中无法注入rolePageMapService导致的异常,下面是依赖注入的位置,没有问题。
public class PermitHelpController {
@Autowired
private IRolePageMapService rolePageMapService;
}
下面是报异常无法注入的方法,也没有问题。
@FeignClient(
name = “bsp”,
path = “${loushang.feign.bsp:/bsp}”
)
public interface IRolePageMapService {}
2.问题根源
IRolePageMapService 类的包路径package com.inspur.optimus.bsp.feign.role;
package com.inspur.optimus.portal.newportal.controller;
import com.inspur.optimus.bsp.feign.role.IRolePageMapService;
PermitHelpController 的包路径和引入IRolePageMapService的路径,通过对比发现代码不在一个模块中,导致PortalApplication启动类启动时无法扫描到IRolePageMapService,所以Bean注入失败。但是在PortalApplication启动类上添加了@EnableFeignClients(basePackages = {“com.inspur.optimus.bsp.feign”})Feign客户端接口扫描,还是无法识别说明本地仓库没有上传该模块包,直接install该模块问题解决。
3.注解效果
3.1@SpringBootApplication(scanBasePackages = {})注解用于扫描Spring Boot应用程序的组件和配置类.
3.2@EnableFeignClients(basePackages = {})注解用于扫描Feign客户端接口
3.3@MapperScan 是 MyBatis-Spring 集成库中用于扫描 Mapper 接口的注解。@MapperScan 注解可以用于 Spring Boot 启动类上,它会使 Spring Boot 自动扫描指定的包路径,用于加载 MyBatis 的 Mapper 接口及其配置。
@MapperScan 注解的主要属性有:
basePackages:要扫描的包路径,可以设置多个,用逗号分隔。当这个属性为空时,会扫描启动类所在的包及其子包。
sqlSessionFactoryBeanName:指定一个已经配置好的 SqlSessionFactoryBean 的名称,这样就可以直接使用该 SqlSessionFactoryBean 来创建 SqlSession。
sqlSessionTemplateBeanName:指定一个已经配置好的 SqlSessionTemplateBean 的名称,这样就可以直接使用该 SqlSessionTemplateBean 来执行 SQL 语句。
通过使用 @MapperScan 注解,Spring Boot 可以自动地加载并初始化 MyBatis 的 Mapper 接口及其相关配置,使得开发人员不需要手动配置这些内容。
4.日志输出路径配置和异常查看
Log4j.xml配置日志输出绝对路径
D:/devolep/logs/optimus-portal
D:/devolep/logs/optimus-portal
[%d{ISO8601}] %-5p %X{user} %n %m%n
查看路径下boot.log日志文件,里面有详细的报错信息。