目录
3.EnableFeignClients注解中的basePackages属性
1.@Mapper,@MapperScan
使用Mybatis持久层框架来操作数据库时,配置@Mapper或者@MapperScan的作用是将Mapper交给Spring容器进行管理
使用@Mapper的话:粒度更细,只是需要在每个Mapper上面都加上该注解,较为繁琐
使用@MapperScan则只需要在启动类上增加该注解,配置Mapper路径即可实现所有Mapper的容器注入。
2.mybatis.mapper-locations
mybatis.mapper-locations在SpringBoot配置文件中使用,作用是扫描Mapper接口对应的XML文件。
如果resources下的mapper.xml和src下的mapper路径相同则不用配置mapper-locations否则需要配置mapper-locations,如果不配置则会提示在mapper绑定mapper.xml时找不到对应的mapper。
3.EnableFeignClients注解中的basePackages属性
package com.ruoyi.common.security.annotation;
import org.springframework.cloud.openfeign.EnableFeignClients;
import java.lang.annotation.*;
/**
* 自定义feign注解
* 添加basePackages路径
*
* @author ruoyi
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@EnableFeignClients
public @interface EnableRyFeignClients {
String[] value() default {};
String[] basePackages() default {"com.qingdao2world", "com.ruoyi"};
Class<?>[] basePackageClasses() default {};
Class<?>[] defaultConfiguration() default {};
Class<?>[] clients() default {};
}
一般情况下,我们在启动类上面添加了@EnableFeignClients注解就是表明当前应用服务(我们称之为服务A)中有的地方想要引用其它应用服务(我们称之为服务B)中的接口。
如果服务B可以单独启动起来并且注册到注册中心,则我们仅仅在服务A的启动类中添加@EnableFeignClients注解即可;如果服务B没有单独启动起来,而是以Jar包的形式被引入到服务A中,则服务A在启动的时候是不会主动去加载服务B中标注了@FeignClient注解的interface而去自动生成bean对象。
这样我们在服务A中的Controller类中通过@Autowired引入使用服务B中的标注了@FeignClient注解的接口是会报错的。
这个时候就需要使用basePackages属性字段去指明应用程序A在启动的时候需要扫描服务B中的标注了@FeignClient注解的接口的包路径。