springboot自定义starter集成controller、Dao
编写starer,其他服务直接引入既可以,通常步骤为:
- pom中引入需要的依赖
- 删除spring-boot-maven-plugin插件
- resources下新建spring.factories,并指定自动配置类
- 项目中引入
本次则是在starter中封装好一些每个项目都会用到的公共接口,这样可以避免重复编写,减少不必要工作量
starter 中集成了
- controller
- service
- dao
- 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