zoukankan      html  css  js  c++  java
  • CSE 支持spring 4/5 以及spring boot 1/2 maven组件依赖关系配置参考

    【摘要】 本文介绍了CSE如何使用Spring 4或者Spring 5,以及在Spring Boot 1和Spring Boot 2中如何集成CSE,重点介绍了CSE提供的maven管理器,以及如何使用。

    CSE maven组件依赖关系配置参考

    说明:本文档适用于CSE SDK 2.3.49及其以上版本。

    1      背景说明

    CSE支持与spring 4, spring 5, spring boot 1, spring boot 2运行,开发者需要配置正确的maven依赖关系,保证获取到合适的版本。

    image.png

    2      CSE依赖组件说明

    为了简化依赖关系配置,以及解决三分软件冲突问题,CSE采用maven的dependencyManagement机制管理依赖关系,开始之前,建议阅读下面的材料了解工作原理。

    http://servicecomb.apache.org/cn/docs/maven_dependency_management/

    2.1      管理器cse-dependency

    使用方式:

    <dependencyManagement>
    	<dependencies>
    		<dependency>
    			<groupId>com.huawei.paas.cse</groupId>
    			<artifactId>cse-dependency</artifactId>
    			<version>${paas.cse.version}</version>
    			<type>pom</type>
    			<scope>import</scope>
    		</dependency>
    	</dependencies>
    </dependencyManagement>

    功能说明:这个依赖关系管理器提供CSE推荐的依赖关系管理。它的依赖关系会随着CSE版本的发展进行调整。比如在spring 4是稳定版本的时候,这个管理器提供spring 4的依赖;spring 5是稳定版本的时候,这个管理器提供spring 5的依赖。当前CSE提供的版本默认为spring 4. 

    2.1.1        spring4升级到spring 5的注意事项

    1.     spring 5和spring 4在很多接口和使用方法上是不兼容的。因此CSE针对这些不兼容的实现提供了对应的处理措施。比如:

    EnableServiceComb:spring 4为org.apache.servicecomb.springboot.starter.provider, spring 5为org.apache.servicecomb.springboot2.starter

    DispatcherServletAutoConfiguration: spring 4为org.springframework.boot.autoconfigure.web, spring 5为org.springframework.boot.autoconfigure.web.servlet

    2.     spring 5废弃了AsyncRestTemplate。CSE提供了AsyncRestTemplate的实现,因此也废弃这个使用方式。

    3.     如果使用了bean配置文件,并且定义了如下schema,需要调整:

    xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans-3.0.xsd”

    修改为:

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

    2.2      管理器cse-dependency-spring4

    如果业务代码没使用spring 5或者spring boot 2,可以使用这个管理器。

    2.3      管理器cse-dependency-spring5

    如果业务代码使用spring 5,可以使用这个管理器。

    2.4      管理器cse-dependency-spring-boot-1

    如果业务代码使用spring boot 1和spring 4,可以使用这个管理器。

    2.5      管理器cse-dependency-spring-boot-2

    如果业务代码使用spring boot 2和spring 5,可以使用这个管理器。

    3      自定义组件的版本号

    CSE的管理器使用了一套测试过的组件,有些开发者需要结合实际情况,升级部分组件的版本。假设开发者使用了cse-dependency-spring4,但是不期望使用CSE提供的4.3.16.RELEASE版本,而是希望使用4.3.15.RELEASE,那么开发者也可以自定义自己的管理器使用符合业务需要的版本。配置在前面的版本会覆盖后面的版本。

    <dependencyManagement>
        <dependencies>
              <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version4.3.15.RELEASE </version>
              </dependency>
            <dependency>
                <groupId>com.huawei.paas.cse</groupId>
                <artifactId>cse-dependency-spring4</artifactId>
                <version>${paas.cse.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    4      理解maven的dependencyManagement机制

    dependencyManagement用于控制某个三方软件使用的版本。当依赖关系非常复杂,并且某些三分软件依赖的同一个三方软件版本不同的时候,选择一个合适的版本会变得非常不容易。通过dependencyManagement能够很好的控制依赖的版本。关于dependencyManagement是如何控制三方件版本的效果描述可以先参考文档:http://servicecomb.apache.org/cn/docs/maven_dependency_management/

    这个章节介绍一下dependencyManagement是如何进行三方件版本合并的。

    假设一个项目定义了如下结构的dependencyManagement。 Maven按照如下过程构造版本规则:

    1.     遍历本pom所有的dependency

    2.     遍历父pom所有的dependency

    3.     遍历本pom的import

    4.     遍历父pom的import

    按照上面的规则遍历,碰到的第一个version,就是实际使用的组件的version。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.servicecomb</groupId>
                <artifactId>spring-boot2-starter</artifactId>
                <version>${org.apache.servicecomb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.servicecomb</groupId>
                <artifactId>spring-boot2-starter-servlet</artifactId>
                <version>${org.apache.servicecomb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.servicecomb</groupId>
                <artifactId>spring-boot2-starter-standalone</artifactId>
                <version>${org.apache.servicecomb.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.huawei.paas.cse</groupId>
                <artifactId>cse-dependency-spring5</artifactId>
                <version>${paas.cse.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    来源:华为云社区  作者:liubao68

  • 相关阅读:
    2017.7.14 使用case when和group by将多条数据合并成一行,并且根据某些列的合并值做条件判断来生成最终值
    2017.7.12 IDEA热部署(更新jsp或java代码不用重启tomcat即可即时生效)
    2017.7.10 Package name does not correspond to the file path
    2017.7.10 Redis报错:DENIED Redis is running in protected mode
    2017.7.10 (windows)redis的安装
    2017.7.7 postgreSQL在插入造成重复时执行更新
    2017.7.1 nginx反向代理服务器域名解析配置(已验证可使用)
    2017.7.1 ftp文件服务器安装与配置(已验证可使用)
    2017.7.1 mysql安装与启动(已验证可以使用)
    日期格式,拼接、跳转,字符集转码(中文乱码)
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165822.html
Copyright © 2011-2022 走看看