相关推荐recommended
【实战】SpringBoot自定义 starter及使用
作者:mmseoamin日期:2024-03-20

文章目录

    • 前言
    • 技术积累
      • SpringBoot starter简介
      • starter的开发步骤
      • 实战演示
      • 自定义starter的使用
      • 写在最后

        前言

        各位大佬在使用springboot或者springcloud的时候都会根据需求引入各种starter,比如gateway、feign、web、test等等的插件。当然,在实际的业务场景中也会有将第三方组件整合为starter供其他项目接入。那么,我们今天就分享一波SpringBoot自定义 Starter及使用。

        技术积累

        SpringBoot starter简介

        starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第1张

        starter的开发步骤

        新建Maven项目,在项目的POM文件中定义使用的依赖;

        新建配置类,写好配置项和默认的配置值,指明配置项前缀;

        新建自动装配类,使用@Configuration和@Bean来进行自动装配;

        新建spring.factories文件,指定Starter的自动装配类;

        实战演示

        自定义一个简单的starter

        本次我们就简单整合一个工具类、一个api接口demo供大家了解创建流程,对于其他的配置项或者涉及数据等等也都在这个基础的starter进行叠加而已。

        1、新建Maven项目

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第2张

        选中两个插web和lombok,点击finish完成项目创建

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第3张

        2、pom中增加项目依赖不传递配置,以及配置maven打包生成可执行依赖jar

        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
        
            org.springframework.boot
            spring-boot-maven-plugin
            
                
                exec
                
                    
                        org.projectlombok
                        lombok
                    
                
            
        
        

        3、删除不必要的文件,最后剩下的项目格式为

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第4张

        4、启动类取消自动配置注释并清空方法

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第5张

        5、.新建spring.factories文件,指定starter的自动装配类

        在resource下新建META-INF目录,然后新增spring.factories自动装配文件,并在文件中指定装配类

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第6张

        org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
          com.example.demostarter.DemoStarterApplication
        

        6、新增测试接口和测试类

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第7张

        /**
         * TestController
         * @author Administrator
         * @version 1.0
         * @date 2024/1/20 0020 15:50
         */
        @RestController
        public class TestController {
            
            /**
             * TestStarterApi
             * @param str
             * @author Administrator
             * @date 2024/1/20 0020 15:51 
             * @return java.lang.String
             */
            @GetMapping("/testStartApi")
            public String TestStarterApi(String str){
                return "this is a TestStarterApi data is "+str;
            }
            
        }
        
        /**
         * TestStartUtils
         * @author Administrator
         * @version 1.0
         * @date 2024/1/20 0020 15:52
         */
        public class TestStartUtils {
            
            /**
             * test
             * @author Administrator
             * @date 2024/1/20 0020 15:53 
             * @return void
             */
            public static void test(){
                System.err.println("this is a TestStartUtils test method");
            }
        }
        

        7、将demo-starter安装到本地仓库进行测试,当然也可以部署到远程仓库

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第8张

        也可以用命令: mvn install

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第9张

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第10张

        至此,整个Starter开发完毕,已经install本地仓库,deploy远程仓库同理(mvn deploy)

        自定义starter的使用

        1、在需要使用starter的maven项目pom中引入demo-starter

        
        
           com.example
           demo-starter
           0.0.1-SNAPSHOT
        
        

        2、编写测试类,并在启动类配置扫描包位置

        /**
         * TestdemoApplicationTests
         * @author Administrator
         * @date 2024/1/20 0020 16:33 
         */
        @SpringBootTest
        class TestdemoApplicationTests {
           /**
            * contextLoads
            * @author Administrator
            * @date 2024/1/20 0020 16:33 
            * @return void
            */
           @Test
           public void contextLoads() {
              TestStartUtils.test();
           }
        }
        
        @ComponentScan("com.example")
        @SpringBootApplication
        public class TestdemoApplication {
           public static void main(String[] args) {
              SpringApplication.run(TestdemoApplication.class, args);
           }
        }
        

        3、测试引入starter,效果展示

        3.1 可以直接依赖starter中的类并可以进行调用

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第11张

        3.2 由于启动类配置了扫描包位置可以扫到starter的api

        【实战】SpringBoot自定义 starter及使用,在这里插入图片描述,第12张

        写在最后

        SpringBoot自定义 Starter及使用还是非常简单,我们在创建的时候需要注意maven插件需要增加可执行jar配置,在resource下需要指定starter的自动装配类即可,在使用starter的项目中需要按需增加扫描包以保证框架可以获取到我们的starter文件。