• 【spring】Spring Boot:定制自己的starter


    概念

         在学习Spring Boot的过程中,接触最多的就是starter。可以认为starter是一种服务——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入bean

    步骤

         引入spring boot 的配置

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    </dependency>

    <!-- Optional dependencies -->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <optional>true</optional>
    </dependency>
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <optional>true</optional>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <optional>true</optional>
    </dependency>

    <!-- @ConfigurationProperties annotation processing (metadata for IDEs) -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
    </dependency>

         增加自动配置文件

    @org.springframework.context.annotation.Configuration
    @ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
    @ConditionalOnBean(DataSource.class)
    @EnableConfigurationProperties(MybatisProperties.class)
    @AutoConfigureAfter(DataSourceAutoConfiguration.class)
    public class MybatisAutoConfiguration {
    }
    • 在src/main/resources目录下新建META-INF文件夹,然后新建spring.factories文件,这个文件用于告诉Spring Boot去找指定的自动配置文件,因此它的内容是
    • # Auto Configure
      org.springframework.boot.autoconfigure.EnableAutoConfiguration=
      org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration

          

    分析

    正规的starter是一个独立的工程,然后在maven中新仓库注册发布,其他开发人员就可以使用你的starter了。

    常见的starter会包括下面几个方面的内容:

    1. 自动配置文件,根据classpath是否存在指定的类来决定是否要执行该功能的自动配置。
    2. spring.factories,非常重要,指导Spring Boot找到指定的自动配置文件。
    3. endpoint:可以理解为一个admin,包含对服务的描述、界面、交互(业务信息的查询)
    4. health indicator:该starter提供的服务的健康指标

           在应用程序启动过程中,Spring Boot使用SpringFactoriesLoader类加载器查找org.springframework.boot.autoconfigure.EnableAutoConfiguration关键字对应的Java配置文件。Spring Boot会遍历在各个jar包种META-INF目录下的spring.factories文件,构建成一个配     置文件链表。除了EnableAutoConfiguration关键字对应的配置文件,还有其他类型的配置文件:

    • org.springframework.context.ApplicationContextInitializer
    • org.springframework.context.ApplicationListener
    • org.springframework.boot.SpringApplicationRunListener
    • org.springframework.boot.env.PropertySourceLoader
    • org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider
    • org.springframework.test.contex.TestExecutionListener

    注意

    1. @ConditionalOnMissingBean的作用是:只有对应的bean在系统中都没有被创建,它修饰的初始化代码块才会执行,用户自己手动创建的bean优先

    2. Spring Boot starter如何找到自动配置文件(xxxxAutoConfiguration之类的文件)?

    • spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置;
    • @Enable:有时需要由starter的用户触发*查找自动配置文件的过程。
    
    
  • 相关阅读:
    hdu 2896 AC自动机模版题
    快递公司送货员送到货时,打电话通知客户来取的改进
    Scala数据类型中的Symbol(符号文本)
    hdu 3065 AC自动机模版题
    Oracle DB 复制数据库
    Java打包生成exe(使用exe4j和inno setup)
    C#的Lambda表达式嵌套例子
    WPF设置控件获得焦点FocusManager
    Winform给TextBox设置默认值(获取焦点后默认值消失)
    使用signtool.exe来验证程序的数字签名是否成功(命令行)
  • 原文地址:https://www.cnblogs.com/lodor/p/7943716.html
走看看 - 开发者的网上家园