springboot自定义starter集成controller、Dao

时间:2022-11-05 22:58:51


springboot自定义starter集成controller、Dao

编写starer,其他服务直接引入既可以,通常步骤为:

  1. pom中引入需要的依赖
  2. 删除spring-boot-maven-plugin插件
  3. resources下新建spring.factories,并指定自动配置类
  4. 项目中引入

本次则是在starter中封装好一些每个项目都会用到的公共接口,这样可以避免重复编写,减少不必要工作量

starter 中集成了

  1. controller
  2. service
  3. dao
  4. mapper

关键点: controller和serviceImpl可以直接把每个都配置到spring.factories中,实现自动配置,​​但是dao无法直接配置,因为dao是一个接口,spring.factories 会自动创建bean,但是到是接口,无法创建bean,所以直接吧dao配置到spring.factories不可行,​​需要借助一个配置类来实现dao的扫描

package cdn.demo.starter.config;

import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.env.Environment;

/**
* 包扫描配置类
* 因为是starter,所以使用spring.factories 自动配置
*/
@Slf4j
@MapperScan("cdn.demo.starter.mapper")
@ComponentScan(value = {"cdn.demo.starter"})
public class BeanConfigScanConfig implements EnvironmentAware {

@Override
public void setEnvironment(@NotNull Environment environment) {
log.info("################################## starter包扫描结束 ################################################");
}
}

备注: 此处把service和controller、dao都配置在该类来扫描,所以spring.factories中只需要配置BeanConfigScanConfig即可

spring.factories:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cdn.demo.starter.config.BeanConfigScanConfig,\
cdn.demo.starter.config.CdnProperties