前言
参考mybatis的starter,制作属于自己的相关的starter demo
一、观察mybatis自制的starter
在上一篇springboot聚合工程搭建的工程下
https://blog.csdn.net/sinat_36759535/article/details/112389076
在父pom引入
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
在依赖中查找,发现mybatis自制的starter主要有这两个jar
二、自制完整starter
1.自制autoconfigure
在父工程下创建一个springboot工程
工程目录如下
pom文件需要修改打包为maven打包 一定要改,不然mvn install 打包到本地会失败
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cch</groupId>
<artifactId>md5-spring-boot-autoconfigure</artifactId>
<version>0.0.2-SNAPSHOT</version>
<name>md5-spring-boot-autoconfigure</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!--修改为maven打包-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</build>
</project>
config包目录下的类如下
@EnableConfigurationProperties(value = {MD5Properties.class})
@Configuration
public class MD5AutoConfiguration {
@Autowired
private MD5Properties md5Properties;
@Bean
MD5Service md5Service() {
MD5Service md5Service = new MD5Service();
md5Service.setProperties(md5Properties);
return md5Service;
}
}
@ConfigurationProperties(prefix = "com.md5")
public class MD5Properties {
private String name="xxx";
private String pwd="yyy";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
service包目录下的类如下:
public class MD5Service {
private MD5Properties properties;
public void setProperties(MD5Properties properties) {
this.properties = properties;
}
public String getMD5(String input) {
return MD5Util.getMD5(input.getBytes()) + "---" + properties.getName() + "===" + properties.getPwd();
}
}
utils包目录下类如下:
public class MD5Util {
public static String getMD5( String source ) {
return getMD5( source.getBytes() );
}
public static String getMD5(byte[] source) {
String s = null;
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte tmp[];
synchronized ( MD5Util.class ) {
md.update(source);
tmp = md.digest();
}
char str[] = new char[16 * 2];
int k = 0;
for (int i = 0; i < 16; i++) {
byte byte0 = tmp[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
s = new String(str);
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
}
启动类如下
@SpringBootApplication
public class Md5SpringBootAutoconfigureApplication {
public static void main(String[] args) {
SpringApplication.run(Md5SpringBootAutoconfigureApplication.class, args);
}
}
resource目录下
application.properties
com.md5.name=cch
com.md5.pwd=654321
META-INF目录下
spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.cch.md5springbootautoconfigure.config.MD5AutoConfiguration
将该工程mvn install到本地或者mvn deploy到远端供我们自制starter引用
2.自制starter
在父工程下创建一个springboot工程
工程目录如下
工程里面什么都不用改,只是把自己制作的md5-spring-boot-autoconfigure引入进来
pom
pom文件需要修改打包为maven打包 一定要改,不然mvn install 打包到本地会失败
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cch</groupId>
<artifactId>md5-spring-boot-starter</artifactId>
<version>0.0.2-SNAPSHOT</version>
<name>md5-spring-boot-starter</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--引入自制的md5-spring-boot-autoconfigure-->
<dependency>
<groupId>com.cch</groupId>
<artifactId>md5-spring-boot-autoconfigure</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</build>
</project>
将该工程mvn install到本地或者mvn deploy到远端 供其他工程引用
三、测试
创建一个新的springboot工程,引用上述的md5-spring-boot-starter
工程目录如下
pom如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cch</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.cch</groupId>
<artifactId>module1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>module1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--引入自制starter-->
<dependency>
<groupId>com.cch</groupId>
<artifactId>md5-spring-boot-starter</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
controller包目录下类
@RestController
public class TestController {
@Autowired
private MD5Service md5Service;
@RequestMapping(value = "",method = RequestMethod.GET)
public void testDemo(){
System.out.println(md5Service.getMD5("123456")+"-------------");
}
}
Module1Application 启动类如下
@SpringBootApplication
public class Module1Application {
public static void main(String[] args) {
SpringApplication.run(Module1Application.class, args);
}
}
application.properties
server.port=8888
com.md5.name=cch1
com.md5.pwd=12
postman测试如下
application.properties文件如果有配置md5相关则使用新配置的,否则使用默认的
总结
主要模仿Mybatis starter的做法
先有个autoconfigration 和starter ,starter什么都不做,只是单纯引用autoconfigration 让别人引用