谈到springboot的核心机制,即自动装配
自动装配是在服务初始化时,自动将需要的组件注入到IOC容器种,以待后续的使用。

步骤:

  1. 获取各组件种META-INF/spring.factories文件
  2. 根据其中value值(其value为类名),通过反射方式创建实体类
  3. 将实体类注入到IOC容器中,待后续使用。

这就是自动装配的三板斧。

为了便于理解自动装配,可通过自己实现starter jar来理解。

  1. 创建starter包 - 创建Empty Project及module,命名其为xxx-starter
    ①定义配置文件规范及对应对象类,比如我规定涉及我的starter的配置结构为cyz.pro

    //此注解类似@Value,能获取到配置文件中的配置条目
    @ConfigurationProperties(prefix = "cyz")
    public class PrefixPojo {
      private String pro;
    
      public String getPro() {
          return pro;
      }
    
      public void setPro(String pro) {
          this.pro = pro;
      }
    }

    ②编写配置组件类,将配置对象放置到容器中。只要声明为组件,便会注入到IOC容器中。

    @Configuration
    @EnableConfigurationProperties(value = PrefixPojo.class)
    @ConditionalOnWebApplication //表示web应用条件下激活
    public class PrefixConfiguration {
    
      PrefixPojo pojo;
    
      @Autowired
      public PrefixConfiguration(PrefixPojo pojo) {
          this.pojo = pojo;
      }
    
      public String service(){
          return pojo.getPro() + "!!";
      }
    }

    ③在resource路径创建“META-INF”路径,创建spring.factories文件,指定组件类

    org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
    pro.yizheng.yizhengstarter.config.PrefixConfiguration
  2. 将其导出为jar
    ①其pom如下:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>

    ②通过maven install命令将此工程打到maven库中
    image.png
    至此,自定义starter步骤结束。

使用时引入相关依赖即可。
image.png
image.png


yizheng
301 声望27 粉丝

一蓑烟雨任平生