首页 > 技术文章 > SpringBoot-自定义starter

caicai920 2021-02-28 16:01 原文

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文件。

 

推荐阅读