閱讀243 返回首頁    go iPhone_iPad_Mac_手機_平板_蘋果apple


EDAS 中的 Spring Boot 開發__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲

本文主要針對使用 Spring Boot 開發應用的用戶,介紹如何快速讓 HSF 在 Spring Boot 中運行,並提供了完整的 Demo下載

開發在 EDAS 中運行的 Spring Boot 項目

開發 Spring Boot 項目需要使用 Servlet 3.0 及以上版本,同時保持生成環境和 Spring Boot 編譯環境 JDK 版本一致。具體開發步驟參見下文。

  1. 創建 Web 項目,引入 Spring Boot 依賴包。

    pom.xml

    1. <!-- 打包方式由JAR 改為 WAR -->
    2. <packaging>war</packaging>
    3. <!-- 添加 spring-boot-starter-parent 依賴 -->
    4. <parent>
    5. <groupId>org.springframework.boot</groupId>
    6. <artifactId>spring-boot-starter-parent</artifactId>
    7. <version>1.4.1.RELEASE</version>
    8. </parent>
    9. <!-- Spring Boot 依賴,這裏必須排除嵌入式的 Tomcat ,否則在 Tomcat4E 會出現問題;若使用 Main 函數啟動,則不用排除 -->
    10. <dependencies>
    11. <dependency>
    12. <groupId>org.springframework.boot</groupId>
    13. <artifactId>spring-boot-starter-web</artifactId>
    14. <exclusions>
    15. <exclusion>
    16. <groupId>org.springframework.boot</groupId>
    17. <artifactId>spring-boot-starter-tomcat</artifactId>
    18. </exclusion>
    19. </exclusions>
    20. </dependency>
    21. </dependencies>
    22. <!-- 添加 Spring Boot 插件 -->
    23. <plugins>
    24. <plugin>
    25. <groupId>org.springframework.boot</groupId>
    26. <artifactId>spring-boot-maven-plugin</artifactId>
    27. </plugin>
    28. </plugins>

    注意:

    在 pom.xml 裏麵引入的 Spring Boot 依賴,若要以 WAR 包形式在 Tomcat 中運行,需要排除 spring-boot-starter-web 嵌入式 Tomcat 依賴,否則會和 Tomcat 默認的 lib 內容形成衝突,導致項目無法啟動。如果在 Main 函數中啟動則不用排除嵌入式 Tomcat,但是在打包發布時,請一定記住需要排除。

  2. 創建 ServletInitializer 類,繼承 SpringBootServletInitializer。

    類似初始化 Spring 上下文,標記該項目打包成 WAR 項目在 Tomcat 中運行。

    繼承 SpringBootServletInitializer 類,實現 configure 方法 ServletInitializer.class。

    1. public class ServletInitializer extends SpringBootServletInitializer {
    2. @Override
    3. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    4. return application.sources(StartupDemoApplication.class);
    5. }
    6. }
  3. 創建 Spring Boot 啟動類。

    類名:StartupDemoApplication.class

    1. @SpringBootApplication
    2. public class StartupDemoApplication {
    3. public static void main(String[] args) {
    4. //啟動服務
    5. SpringApplication.run(StartupDemoApplication.class, args);
    6. }
    7. }
  4. 刪除 webapp 下麵的 web.xml 文件。

    若該文件存在,在容器加載 Web 的時候,就會直接加載該配置文件,但是由於該配置文件沒有做任何配置,因此會造成 Spring Boot 加載不成功。

    排除方式:

    若發現發布在 EDAS 中的 WAR 沒有執行您自己的代碼,那麼有可能就是該問題導致,請及時檢查是否存在 web.xml 文件。

  5. 打包 WAR,上傳 EDAS 啟動即可。

    如果測試階段,需要直接在 Main 方法中運行,請把 pom.xml 文件中的 spring-boot-starter-tomcat 排除取消。

Spring Boot 結合 HSF 開發

  1. 添加 HSF 服務提供者配置文件(hsf-provider-beans.xml)。

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:hsf="https://www.taobao.com/hsf" xmlns="https://www.springframework.org/schema/beans"
    4. xsi:schemaLocation="https://www.springframework.org/schema/beans
    5. https://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    6. https://www.taobao.com/hsf
    7. https://www.taobao.com/hsf/hsf.xsd"
    8. default-autowire="byName">
    9. <!-- 服務處理 bean -->
    10. <bean id="memberServiceImpl"
    11. class="com.alibaba.edas.springboot.service.impl.MemberServiceImpl" />
    12. <!-- 提供一個 HSF 服務示例 -->
    13. <hsf:provider id="memberService"
    14. interface="com.alibaba.edas.springboot.service.MemberService" ref="memberServiceImpl" group="test" />
    15. </beans>
  2. 導入 HSF 服務提供者配置。

    1. @ImportResource(locations={"classpath:hsf-provider-beans.xml"})
    2. @SpringBootApplication
    3. public class StartupDemoApplication {
    4. public static void main(String[] args) {
    5. SpringApplication.run(StartupDemoApplication.class, args);
    6. }
    7. }
  3. 打包上傳 EDAS ,具體請參考服務上線

  4. 添加 HSF 消費者配置文件(hsf-consumer-beans.xml)。

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:hsf="https://www.taobao.com/hsf" xmlns="https://www.springframework.org/schema/beans"
    4. xsi:schemaLocation="https://www.springframework.org/schema/beans
    5. https://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    6. https://www.taobao.com/hsf
    7. https://www.taobao.com/hsf/hsf.xsd"
    8. default-autowire="byName">
    9. <!-- 消費一個 HSF 服務示例 -->
    10. <hsf:consumer id="memberService" interface="com.alibaba.edas.springboot.service.MemberService" group="test" />
    11. </beans>
  5. 導入 HSF 消費者配置。

    1. @ImportResource(locations="classpath:hsf-consumer-beans.xml")
    2. @SpringBootApplication
    3. public class StartupDemoApplication {
    4. public static void main(String[] args) {
    5. SpringApplication.run(StartupDemoApplication.class, args);
    6. }
    7. }
  6. 打包上傳 EDAS ,具體請參考服務上線

最後更新:2016-11-23 16:04:20

  上一篇:go HSF 單元測試__服務開發_開發者指南_企業級分布式應用服務 EDAS-阿裏雲
  下一篇:go 服務打包__線上服務發布_開發者指南_企業級分布式應用服務 EDAS-阿裏雲