SpringBoot-自定义starter
SpringBoot-自定义starter
1、新建一个项目 分别建好 configure、service 、impl
定义一个简单的接口
package com.caicai.springboot.service; //字符串分割接口定义 import java.util.List; public interface ISplitService { List<String> split(String value); }
定义一个实现接口类
package com.caicai.springboot.service.impl; import com.caicai.springboot.service.ISplitService; import org.springframework.util.StringUtils; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class SplitServiceImpl implements ISplitService { @SuppressWarnings("all") @Override public List<String> split(String value) { return Stream.of(StringUtils.split(value,",")).collect(Collectors.toList()); } }
编写一个自动配置类
package com.caicai.springboot.configure; import com.caicai.springboot.service.ISplitService; import com.caicai.springboot.service.impl.SplitServiceImpl; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration //该类是配置类,所以需要添加这个注解 //添加条件注解 //Conditional:条件生效。 ConditionalOnClass:当这个class出现的时候,才会实现自动注入 @ConditionalOnClass(value = {ISplitService.class, SplitServiceImpl.class})//类路径下面,classpath 发现定义的类的情况,进行一个自动配置 public class SplitAutoConfigure { @Bean//让service成为springboot中的一个bean,可以让springboot能够识别出来。 @ConditionalOnMissingBean //当spring上下文中,不存在这个bean的时候,它才会自动配置注入 ISplitService startservice (){ return new SplitServiceImpl(); } }
最后在建一个MEAT-INFO文件夹,新建一个spring.factories
spring.factories 定义引入类,也就是开启自动配置注解
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.caicai.springboot.configure.SplitAutoConfigure
MVN执行命令,将项目打包成jar
mvn clean install -Dmaven.test.skip=true
Mvn项目编译的时候遇到编码GBK的不可映射字符 问题
映射字符 [ERROR] /F:/21Project/com.caicai.springboot/src/main/java/com/caicai/springboot/configure/SplitAutoConfigure.java:[11,22] 编码GBK的不可映射字符 [ERROR] /F:/21Project/com.caicai.springboot/src/main/java/com/caicai/springboot/configure/SplitAutoConfigure.java:[12,115] 编码GBK的不可映射字符 [ERROR] /F:/21Project/com.caicai.springboot/src/main/java/com/caicai/springboot/configure/SplitAutoConfigure.java:[12,123] 编码GBK的不可映射字符 [ERROR] /F:/21Project/com.caicai.springboot/src/main/java/com/caicai/springboot/configure/SplitAutoConfigure.java:[15,38] 编码GBK的不可映射字符 [ERROR] /F:/21Project/com.caicai.springboot/src/main/java/com/caicai/springboot/configure/SplitAutoConfigure.java:[15,70] 编码GBK的不可映射字符 [ERROR] /F:/21Project/com.caicai.springboot/src/main/java/com/caicai/springboot/configure/SplitAutoConfigure.java:[16,79] 编码GBK的不可映射字符 [ERROR] /F:/21Project/com.caicai.springboot/src/main/java/com/caicai/springboot/service/ISplitService.java:[2,16] 编码GBK的不可映射字符 [INFO] [INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ split-spring-boot-stater ---
解决方法:在POM.XML配置文件的中的configuration标签中添加一个中文字符集
<configuration> <source>8</source> <target>8</target> <encoding>UTF-8</encoding> </configuration>
其它应用使用这个starter方法
首先复制,自定义类下pom文件中的
<groupId>com.caicai.springboot</groupId> <artifactId>split-spring-boot-stater</artifactId> <version>1.0-SNAPSHOT</version>
粘贴复制需要使用的新工程中,重新build pom文件。
开开心心,上班!
快快乐乐,游玩!
及时行乐!