mybatis.mapper-locations,@MapperScan的作用及@EnableFeignClients

目录

1.@Mapper,@MapperScan

2.mybatis.mapper-locations

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注解的接口的包路径。

猜你喜欢

转载自blog.csdn.net/m0_72167535/article/details/129675222