<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      如何自定義starter

      springboot啟動流程的系列文章中,我們看過了springboot的自動配置機制,本文將基于自動配置機制自定義一個自動配置的starter示例

       

      正文

      模塊結構

      首先,我們準備兩個模塊service和web,模塊結構如

       

      service模塊

      在service模塊中,我們添加一個服務類TestService

      public class TestService {
      
          public String getName() {
              return "lay";
          }
      }

       

      接著再添加一個ServiceAutoConfiguration配置類,將TestService變成一個Bean

      public class ServiceAutoConfiguration {
      
      
          @Bean
          public TestService testService() {
              return new TestService();
          }
      }

       

      還有最重要的一步,將ServiceAutoConfiguration添加到META-INF/spring.factories中成為自動配置類

      org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.lay.service.ServiceAutoConfiguration

       

      這樣,service就完畢了,我們看看service模塊的結構

       

      web模塊

      我們先在web的pom.xml文件中添加service的模塊依賴

      <dependency>
          <groupId>cn.lay</groupId>
          <artifactId>service</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>

       

      再添加一個TestController

      @RestController
      public class TestController {
      
          @Autowired
          private TestService testService;
      
          @GetMapping("getName")
          public String getName() {
              return testService.getName();
          }
      }

       

      啟動測試

      當我們啟動web以后,會根據service的META-INF/spring.factories中配置的自動配置類把TestService變成Bean,然后注入到TestController中

      我們打開瀏覽器測試一下

      可以看到,我們成功執行獲得結果

       

      添加條件化注解

      在META-INF/spring.factories中添加配置類,但是很多時候我們希望配置類在滿足一些條件的時候才生效,為此我們可以使用@Conditional注解或者組合了@Conditional注解的注解

      本例中,我們將在ServiceAutoConfiguration中使用使用@ConditionalOnClass注解,該注解表示當某個類存在的時候配置類才生效

      @ConditionalOnClass(name = "java.lang.String")
      public class ServiceAutoConfiguration {
      
      
          @Bean
          public TestService testService() {
              return new TestService();
          }
      }

      注解中指明,當String類存在的時候ServiceAutoConfiguration才會進行解析處理,而如果你指明一個不存在的類,如:java.lang.String2,那么TestService將不會被解析成一個Bean

       

      添加properties

      我們先在service模塊的pom.xml中添加properties處理依賴

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

       

      添加一個配置屬性對象

      @ConfigurationProperties(prefix = "service")
      public class ServiceProperties {
          private String name;
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          @Override
          public String toString() {
              return "ServiceProperties{" +
                      "name='" + name + '\'' +
                      '}';
          }
      }

       

      在ServiceAutoConfiguration添加為Bean,開啟屬性自動解析

      @ConditionalOnClass(name = "java.lang.String")
      @EnableConfigurationProperties(value = {ServiceProperties.class})
      public class ServiceAutoConfiguration {
      
      
          @Bean
          public TestService testService() {
              return new TestService();
          }
      }

       

      把ServiceProperties注入到TestService中

      public class TestService {
      
          @Autowired
          private ServiceProperties serviceProperties;
      
          public String getName() {
              return serviceProperties.getName();
          }
      }

       

      回到web模塊,在application.properties中添加配置

      service.name=lay

      重新啟動測試,你會看到瀏覽器獲取到了結果

       

      總結

      springboot的自動配置,其實就是包了一層自動發現(spi機制)的spring.factories配置,然后通過@Conditional相關的條件化處理來決定是否進行配置類的解析工作。

       

      posted @ 2019-09-14 06:06  __lay  閱讀(1413)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲999精品AA片在线爽| 沙雅县| 国产不卡av一区二区| 国产精品成人aaaaa网站 | 国产成本人片无码免费| 成人午夜在线观看日韩| 欧美综合人人做人人爱| 国产在线精品国偷产拍| 国产在线精彩自拍视频| 欧美性群另类交| 激情综合网激情综合| 亚洲男人第一无码av网站| 国产99视频精品免费专区| 无码人妻斩一区二区三区| 亚洲www永久成人网站| 国产无套内射又大又猛又粗又爽| 免费又爽又大又高潮视频| 欧美色丁香| 人妻系列中文字幕精品| 国产高清在线a视频大全 | 蜜臀av午夜精品福利| 黄色A级国产免费大片视频| 曰韩无码av一区二区免费| 国产在线无遮挡免费观看| 亚洲日韩图片专区第1页| 乌什县| 五月天国产成人av免费观看| 国产精品国产三级国快看| 自拍亚洲综合在线精品| 中文字幕亚洲人妻系列| 欧美乱码伦视频免费| 亚洲十八禁一区二区三区| 国产爆乳无码av在线播放| 色综合伊人色综合网站| 亚洲欧美日韩综合久久久| 精品国产乱码久久久久久婷婷| 国产一区二区三区不卡观| 高清色本在线www| 性色av无码久久一区二区三区| 亚洲色成人一区二区三区| 人妻日韩精品中文字幕|