SpringBoot框架-自定义start启动器

一、前言

        SpringBoot就是为了解决Spring臃肿的配置衍生出来的骨架,采用约定大于配置的方式,去除大量配置,今天带大家手写start组件。感受springBoot可插拔、伸缩扩展的代码结构;

 

二、开发步骤

1、约定大于配置:

        首先创建一个maven项目:  SpringBoot框架-自定义start启动器_第1张图片

代码结构:

SpringBoot框架-自定义start启动器_第2张图片

resources目录下创建META-INF目录:

创建两个附件:

1)additional-spring-configuration-metadata.json  自动提示功能

{
  "properties": [
    {
      "name": "jason.redisson.host",
      "type": "java.lang.String",
      "description": "redis的服务器地址",
      "defaultValue": "localhost"
    },{
      "name": "jason.redisson.port",
      "type": "java.lang.Integer",
      "description": "redis服务器的端口",
      "defaultValue": 6379
    }
  ]

}

大家参考下面properties表格进行配置上的理解。

名称 类型 目的
name String 属性的全名。名称采用小写的周期分隔形式(例如server.address)。此属性是强制性的。
type String 属性的数据类型的完整签名(例如java.lang.String),但也是完整的泛型类型(例如java.util.Map)。您可以使用此属性来指导用户可以输入的值的类型。为了保持一致性,通过使用其包装对应项(例如,boolean变为java.lang.Boolean)来指定基元的类型。请注意,此类可能是一个复杂类型,它从Stringas绑定的值转换而来。如果类型未知,则可以省略。
description String 可以向用户显示的组的简短描述。如果没有可用的描述,则可以省略。建议描述为简短段落,第一行提供简明摘要。描述中的最后一行应以句点(.)结尾。
sourceType String 贡献此属性的源的类名称。例如,如果属性来自带注释的类@ConfigurationProperties,则此属性将包含该类的完全限定名称。如果源类型未知,则可以省略。
defaultValue Object 默认值,如果未指定属性,则使用该值。如果属性的类型是数组,则它可以是值数组。如果默认值未知,则可以省略。

deprecation每个properties元素的属性中包含的JSON对象可以包含以下属性:

名称 类型 目的
level String 弃用级别,可以是warning(默认)或error。当属性具有warning弃用级别时,它仍应绑定在环境中。但是,当它具有error弃用级别时,该属性不再受管理且不受约束。
reason String 该属性被弃用的原因的简短描述。如果没有可用的原因,可以省略。建议描述为简短段落,第一行提供简明摘要。描述中的最后一行应以句点(.)结尾。
replacement String 替换此不推荐使用的属性的属性的全名。如果此属性没有替换,则可以省略。

2)spring.factories

 文件内容:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.jason.RedissonAutoConfiguration

2、撸代码:

   配置类:

package com.jason;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * @program: redission-starter
 * @description
 * @author: 大龄程序猿
 * @create: 2020-06-29 22:28
 **/
@ConfigurationProperties(prefix = "jason.redisson")
public class RedissonProperties {
    private String host="localhost";
    private int port=6379;
    private int timeout;
    private boolean  ssl;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public int getTimeout() {
        return timeout;
    }

    public void setTimeout(int timeout) {
        this.timeout = timeout;
    }

    public boolean isSsl() {
        return ssl;
    }

    public void setSsl(boolean ssl) {
        this.ssl = ssl;
    }
}

Redission封装:spring-boot-configuration-processor  引用。




  4.0.0

  com.jason
  redission-spring-boot-starter
  1.0-SNAPSHOT

  redission-starter
  
  http://www.example.com

  
    UTF-8
    1.7
    1.7
  

  
    
      junit
      junit
      4.11
      test
    
    
      org.springframework.boot
      spring-boot-starter
      2.3.0.RELEASE
      true
    
    
      org.redisson
      redisson
      3.13.1
    
    
      org.springframework.boot
      spring-boot-configuration-processor
      2.3.1.RELEASE
    
  

  
    
      
        
        
          maven-clean-plugin
          3.1.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.8.0
        
        
          maven-surefire-plugin
          2.22.1
        
        
          maven-jar-plugin
          3.0.2
        
        
          maven-install-plugin
          2.5.2
        
        
          maven-deploy-plugin
          2.8.2
        
        
        
          maven-site-plugin
          3.7.1
        
        
          maven-project-info-reports-plugin
          3.0.0
        
      
    
  

 验证:

SpringBoot框架-自定义start启动器_第3张图片

 

三、附录-Spring Boot应用启动器收集:


1、spring-boot-starter
这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。

2、spring-boot-starter-actuator
帮助监控和管理应用。

3、spring-boot-starter-amqp
通过spring-rabbit来支持AMQP协议(Advanced Message Queuing Protocol)。

4、spring-boot-starter-aop
支持面向方面的编程即AOP,包括spring-aop和AspectJ。

5、spring-boot-starter-artemis
通过Apache Artemis支持JMS的API(Java Message Service API)。

6、spring-boot-starter-batch
支持Spring Batch,包括HSQLDB数据库。

7、spring-boot-starter-cache
支持Spring的Cache抽象。

8、spring-boot-starter-cloud-connectors
支持Spring Cloud Connectors,简化了在像Cloud Foundry或Heroku这样的云平台上连接服务。

9、spring-boot-starter-data-elasticsearch
支持ElasticSearch搜索和分析引擎,包括spring-data-elasticsearch。

10、spring-boot-starter-data-gemfire
支持GemFire分布式数据存储,包括spring-data-gemfire。

11、spring-boot-starter-data-jpa
支持JPA(Java Persistence API),包括spring-data-jpa、spring-orm、Hibernate。

12、spring-boot-starter-data-mongodb
支持MongoDB数据,包括spring-data-mongodb。

13、spring-boot-starter-data-rest
通过spring-data-rest-webmvc,支持通过REST暴露Spring Data数据仓库。

14、spring-boot-starter-data-solr
支持Apache Solr搜索平台,包括spring-data-solr。

15、spring-boot-starter-freemarker
支持FreeMarker模板引擎。

16、spring-boot-starter-groovy-templates
支持Groovy模板引擎。

17、spring-boot-starter-hateoas
通过spring-hateoas支持基于HATEOAS的RESTful Web服务。

18、spring-boot-starter-hornetq
通过HornetQ支持JMS。

19、spring-boot-starter-integration
支持通用的spring-integration模块。

20、spring-boot-starter-jdbc
支持JDBC数据库。

21、spring-boot-starter-jersey
支持Jersey RESTful Web服务框架。

22、spring-boot-starter-jta-atomikos
通过Atomikos支持JTA分布式事务处理。

23、spring-boot-starter-jta-bitronix
通过Bitronix支持JTA分布式事务处理。

24、spring-boot-starter-mail
支持javax.mail模块。

25、spring-boot-starter-mobile
支持spring-mobile。

26、spring-boot-starter-mustache
支持Mustache模板引擎。

27、spring-boot-starter-redis
支持Redis键值存储数据库,包括spring-redis。

28、spring-boot-starter-security
支持spring-security。

29、spring-boot-starter-social-facebook
支持spring-social-facebook

30、spring-boot-starter-social-linkedin
支持pring-social-linkedin

31、spring-boot-starter-social-twitter
支持pring-social-twitter

32、spring-boot-starter-test
支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块。

33、spring-boot-starter-thymeleaf
支持Thymeleaf模板引擎,包括与Spring的集成。

34、spring-boot-starter-velocity
支持Velocity模板引擎。

35、spring-boot-starter-web
S支持全栈式Web开发,包括Tomcat和spring-webmvc。

36、spring-boot-starter-websocket
支持WebSocket开发。

37、spring-boot-starter-ws
支持Spring Web Services。


Spring Boot应用启动器面向生产环境的还有2种,具体如下:

1、spring-boot-starter-actuator
增加了面向产品上线相关的功能,比如测量和监控。

2、spring-boot-starter-remote-shell
增加了远程ssh shell的支持。

最后,Spring Boot应用启动器还有一些替换技术的启动器,具体如下:

1、spring-boot-starter-jetty
引入了Jetty HTTP引擎(用于替换Tomcat)。

2、spring-boot-starter-log4j
支持Log4J日志框架。

3、spring-boot-starter-logging
引入了Spring Boot默认的日志框架Logback。

4、spring-boot-starter-tomcat
引入了Spring Boot默认的HTTP引擎Tomcat。

5、spring-boot-starter-undertow
引入了Undertow HTTP引擎(用于替换Tomcat)。

 

你可能感兴趣的:(SpringBoot)