亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring boot微服務如何自定義starter原理

發布時間:2021-08-04 14:09:52 來源:億速云 閱讀:150 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“spring boot微服務如何自定義starter原理”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“spring boot微服務如何自定義starter原理”這篇文章吧。

使用spring boot開發微服務后,工程的數量大大增加(一定要按照領域來切,不要一個中間件客戶端包一個),讓各個jar從開發和運行時自包含成了一個重要的內容之一。spring boot starter就可以用來解決該問題(沒事啟動時別依賴于applicationContext.getBean獲取bean進行處理,依賴關系太折騰,有時候在復雜系統中解決此事比較麻煩,需要修改開源框架代碼才能實現,反過來修改開源源碼后,維護也是個麻煩事)。言歸正傳,說說自定義starter。首先請熟悉spring boot的核心理念,不然容易為了starter而starter,這種情況太多了。

創建一個maven項目,在pom文件中添加如下依賴:

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-autoconfigure</artifactId>
      <version>2.0.0.RELEASE</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

創建properties屬性類,用于讀取屬性(當然可選,如果一開始沒有按照spring boot autoconfig的套路來,改起來還是挺費勁的,但是一旦這么做了,就會想,TMD這才是真正的開發模式,@Value那套早該丟了)。

@ConfigurationProperties(prefix = "com.xxx")
public class HelloServiceProperties {

  private String name = "james";

  private String hobby = "cc";

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getHobby() {
    return hobby;
  }

  public void setHobby(String hobby) {
    this.hobby = hobby;
  }
}

@ConfigurationProperties配置此注解可以自動導入application.properties配置文件中的屬性,前提需要指定屬性前綴prefix。

3.創建配置類

public class HelloService {

  private String name;

  private String hobby;

  public String getName() {
    return "name is " + name;
  }

  public String getHobby() {
    return "hobby is " + hobby;
  }

  public void setName(String name) {
    this.name = name;
  }

  public void setHobby(String hobby) {
    this.hobby = hobby;
  }
}

4.創建自動配置類:

@Configuration
@EnableConfigurationProperties(HelloServiceProperties.class)
@ConditionalOnClass(HelloServiceConfiguration.class)
@ConditionalOnProperty(prefix = "com.xxx", value = "enabled", matchIfMissing = true)@ComponentScan({"com.xxx"}) // 如果bean比較多,一般采用這種方式
public class HelloServiceAutoConfiguration {

  @Autowired
  private HelloServiceProperties helloServiceProperties;

  @Bean // bean比較少、且順序和邏輯有特殊要求的模塊,一般采用這種方式
  @ConditionalOnMissingBean(HelloServiceConfiguration.class)
  public HelloServiceConfiguration helloServiceConfiguration() {
    HelloService helloService = new HelloService();
    helloService.setName(helloServiceProperties.getName());
    helloService.setHobby(helloServiceProperties.getHobby());
    return helloService;
  }
}

5.在resources文件夾下面新建一個META-INF文件,并在下面創建spring.factories文件,將4中的配置類進行注冊。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xxx.HelloServiceAutoConfiguration

6.新建一個springboot項目,在pom文件中添加剛剛打包的jar的坐標。

7.使用@Autowired訪問接口。

@SpringBootApplication
@RestController
public class Springboot03Application {

  @Autowired
  private HelloService helloService;

  public static void main(String[] args) {
    SpringApplication.run(Springboot03Application.class, args);
  }

  @RequestMapping("/name")
  public String getName() {
    return helloService.getName();
  }

  @RequestMapping("/hobby")
  public String getHobby() {
    return helloService.getHobby();
  }
}

相比原來要使用@Import注解導入一個@Configuration類,或者在一處集中維護ComponentScan的所有路徑,使用autoconfigure starter可以讓應用明顯實現的更加自包含和解耦。

以上是“spring boot微服務如何自定義starter原理”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枣庄市| 崇信县| 淮阳县| 甘肃省| 靖宇县| 大兴区| 顺昌县| 红桥区| 富民县| 平凉市| 三河市| 余江县| 翁源县| 西充县| 潼关县| 闻喜县| 石城县| 巴林左旗| 通山县| 河源市| 郸城县| 宣恩县| 茶陵县| 醴陵市| 抚顺县| 长治县| 台东县| 马尔康县| 徐闻县| 西盟| 普格县| 永新县| 林西县| 永仁县| 故城县| 德格县| 门源| 昭苏县| 正镶白旗| 垫江县| 铜梁县|