用编程语言编写自己的SpringBoot-Starter

    作者:课课家教育2019-08-09 20:19:45

    大神带你学编程,欢迎选课

    一看就会,编写自己的SpringBoot-Starter.java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。

    在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。

    starter的好处是,集成众多依赖,提供一个一站式的依赖项。 Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。

    用编程语言编写自己的SpringBoot-Starter_编程语言_Java_JavaScript_课课家

    开发自己的starter

    starter的好处是,集成众多依赖,提供一个一站式的依赖项。 Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。 使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖, spring Boot就能自动扫描并加载相应的模块。

    命名

    spring官方的starter命令为spring-boot-starter-xxx,所以我们开发的项目不要以spring-boot开头。 建议写成:xxx公司组织-spring-boot-starter-yyy模块

    开发步骤

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

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

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

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

    具体代码

    1,新建一个springboot项目,在pom文件中增加以下依赖:

    1.  
    2.  org.springframework.boot 
    3.  spring-boot-configuration-processor 
    4.  true 
    5.  

    主要的作用是在编译时在META-INF下生成spring-configuration-metadata.json 文件,该文件主要为IDE使用。 即可以通过在application.properties文件中通过ctrl + 点击进入配置属性所在的类中

    2,配置类

    关键是要指定配置项的前缀。这些配置项,也可以设置默认值。

    3,自动装配类

    自动装配类是整个starter的逻辑核心。根据配置项的值,自动注入合适的bean。

    在这个项目中,有一个抽象的AbstractMyService,代表客户端会使用的服务bean。

    MyStarterServiceV1和MyStarterServiceV2是根据条件注入的具体实现类。

    也就是客户端在配置spring101.version=v1会使用MyStarterServiceV1,

    配置spring101.version=v2会使用MyStarterServiceV2

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

    在resources下新建META-INF文件夹,新建spring.factories文件。内容为:

    1. #指定autoconfigure加载的自动装配类是哪个 
    2. org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.uncley.MyAutoConfiguration 

    5,打包测试

    maven clean install

    先install到本地仓库测试

    新创建一个普通的springboot工程:mystarter-use 依赖 在application.properties增加配置

    1. spring101.age=22 
    2. spring101.name=uncleY 
    3. spring101.version=v2 

    写一个测试类

    1. @Component 
    2. @Slf4j 
    3. public class MyStarterUseTest implements CommandLineRunner { 
    4.  @Autowired 
    5.  private AbstractMyService myService; 
    6.  @Override 
    7.  public void run(String... args) throws Exception { 
    8.  log.info(myService.hello()); 
    9.  } 

    通过修改spring101.version的值可以观察到,实例化了不同的service

     JDk(Java Development Kit)称为java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。

课课家教育

未登录