创建starter项目
命名规范
SpringBoot官方命名方式
格式:spring-boot-starter-{模块名}
举例:spring-boot-starter-web
自定义命名方式
格式:{模块名}-spring-boot-starter
举例:mystarter-spring-boot-starter
必须引入的jar包,依赖
表示两个项目之间依赖不传递;不设置optional或者optional是false,表示传递依赖
例如:project1依赖a.jar(optional=true),project2依赖project1,则project2不依赖a.jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
编写相关属性类(XxxProperties):XxxProperties.java
@ConfigurationProperties注解基本用法
前缀定义了哪些外部属性将绑定到类的字段上
根据 Spring Boot 宽松的绑定规则,
类的属性名称必须与外部属性的称匹配
我们可以简单地用一个值初始化一个字段来定义一个默认值
类本身可以是包私有的
类的字段必须有公共 setter 方法
注意:SmsProperties代码写完后会报如下错误,这是正常的,因为
还有配置类AutoConfig和一个注解@EnableConfigurationProperties没有加
Not registered via @EnableConfigurationProperties or marked as Spring component
编写Starter项目的业务功能
例如:
IXxxService
XxxServiceImpl
编写自动配置类AutoConfig
1. @Configuration:
定义一个配置类
2. @EnableConfigurationProperties:
@EnableConfigurationProperties注解的作用是@ConfigurationProperties注解生效。
如果只配置@ConfigurationProperties注解,在IOC容器中是获取不到properties配置文件转化的bean的
例如:
编写spring.factories文件加载自动配置类
1.在resources下新建META-INF文件夹,然后创建spring.factories文件
2.在该文件中加入如下配置,该配置指定上步骤中定义的配置类为自动装配的配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=组织机构域名.zzcloudspringbootstarter.config.AutoConfig(一个一个去点出来的 有提示)
注1:其中AutoConfig是starter配置文件的类限定名,多个之间逗号分割,还可以\进行转义即相当于去掉后面换行和空格符号
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration,\
com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration
打包安装(引入jar包)
打包时需要注意一下,SpringBoot项目打包的JAR是可执行JAR,它的类放在BOOT-INF目录下,
如果直接作为其他项目的依赖,会找不到类。可以通过修改pom文件来解决,代码如下:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
打包的时候是右键项目 点击Run Maven 再点击install
打包的时候注意重新去仓库里面创建一个跟你的组织机构域名相同的包,然后打包的东西放在里面即可
其他项目去引用