F1V3.0-21 微服务旧版本升级

16 篇文章 0 订阅

由于我们微服务的诸多好处,很多基于F12.0的项目必将大量迁移,整改成微服务项目,我们该如何进行升级呢?本文将做一个特殊说明,让你在迁移项目时少走弯路。

1 新建maven项目

命名为f1-xxxxx(推荐)

1.1 编写pom文件

本文提供一个通用模板如下所示:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>f1-xxxx</artifactId>
    <parent>
        <artifactId>f1-parent</artifactId>
        <groupId>com.joinbright.f1</groupId>
        <version>3.0.0-SNAPSHOT</version>
    </parent>
    <dependencies>
        <!-- 开发时热加载工具 -->
        <!-- <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency> -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>com.joinbright.f1</groupId>
            <artifactId>f1-starter</artifactId>
        </dependency>
        <!--类型挂接脚本,访问model中的服务引入这个-->
        <dependency>
            <groupId>com.joinbright.f1</groupId>
            <artifactId>f1-interface-model</artifactId>
        </dependency>
        <dependency>
                <groupId>com.joinbright.f1</groupId>
                <artifactId>f1-starter-listener</artifactId>
        </dependency>
        <!--接入平台取得授权引入这个-->
        <dependency>
            <groupId>com.joinbright.f1</groupId>
            <artifactId>f1-starter-auth</artifactId>
        </dependency>
        <!--需要访问permission中的服务引入这个-->
        <dependency>
            <groupId>com.joinbright.f1</groupId>
            <artifactId>f1-interface-permission</artifactId>
        </dependency>
        <!--缓存引入这个-->
        <dependency>
            <groupId>com.joinbright.f1</groupId>
            <artifactId>f1-starter-cache</artifactId>
        </dependency>
        <!-- <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
        </dependency> -->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
        </dependency>
    </dependencies>

    <build>
        <finalName>f1-xxxx</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

1.2 编写启动类

创建一个根包 com.jb.xxxx(推介命名) ,在这个下面新建一个启动类。本文提供一个通用启动类:

@SpringBootApplication
@EnableDiscoveryClient 
@EnableOAuth2Sso
@EnableFeignClients("com.jb.*.client")
@ComponentScan(basePackages ={"com.jb.xxx"})
@EntityScan(basePackages = {"com.jb.*.model"})
@EnableCaching
public class XXXXXX{

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
    @Bean
    public Logger.Level feignLoggerLevel() {
        return feign.Logger.Level.FULL;
    }
    public static void main(String[] args) {
        SpringApplication.run(XXXXXX.class,args);
    }
}

1.3 建立配置文件

在 src/main/resources 下建立如下文件,这里配置文件内容不做过多说明,大家可以在平台提供的微服务中找到这些配置,稍作修改即可。

application.properties,
bootstrap.properties,
logback-spring.xml

同时把resource.xml拷贝到 src/main/resources 下

2 移植文件

对于后台文件的移植可能很简单,只要你引入正确的平台jar包,对于报错信息,更多的是jar包结构改变引起,我们只需要删除原来import的引入,eclipse会帮助我们自动检索,只需要点下鼠标即可成功引入。

2.1 service服务的移植

以前的osgi项目我们使用的是切面的形式在service层切入事物,现在我们使用注解的形式切入事物。

@Transactional(value="transactionManager",propagation=Propagation.REQUIRED)

2.2 control的移植

基本平滑移植。

2.3 Model的移植

对于@JsonProperty(“xxxx”)注解的属性需要

原来的为

import org.codehaus.jackson.annotate.JsonProperty

改变成:

import com.fasterxml.jackson.annotation.JsonProperty;

对于以前java文件,我们新版的F13.0对一些基础类的包结构可能做了更改,现在总结如下:

F12.0F13.0
org.codehaus.jackson.annotate.JsonPropertycom.fasterxml.jackson.annotation.JsonProperty
com.jb.f1.kernel.util.ThreadLocalUtilscom.jb.util.ThreadLocalUtils
com.jb.f1.kernel.util.classloader.ClassLoaderUtilscom.jb.util.ClassLoaderUtils
com.jb.f1.kernel.util.security.MD5com.jb.util.MD5

3 脚本的移植

平台不支持模型工具中直接编写脚本的方式,所以对于旧平台中模型工具中写的脚本需要移植到现在的服务中。

3.1 类型脚本移植

引入依赖 f1-interface-model

模型类型中的脚本改为如下模式:

第一步:

新建一个类继承自BaseClsScript,如下所示;

@Service("xxxxxx")
@Transactional(value="transactionManager",propagation=Propagation.REQUIRED)
public class SysConfigScript extends BaseClsScript{
}

第二步:

找到对应的脚本:在模型工具中右键打开或者直接在 us_sys.tb_model_clsscript表中把脚本内容拷贝出来,粘贴到新建好的类中

第三步:

挂接脚本,在对应的类型鼠标右键选择挂接脚本,把服务ID,服务名称填上即可。


这里写图片描述

3.2 调度任务的脚本

引入依赖 f1-interface-quartz。

对于调度任务挂接脚本,只是实现的类不同,其他步骤基本一样。

第一步:新建一个类实现 IJobScript,如下所示;

@Service("quartScript")
@Transactional(value="transactionManager",propagation=Propagation.REQUIRED)
public class QuartScript implements IJobScript{
    @Override
    public void execute(F1JobExecutionContext arg0) {
        System.out.println("调度任务脚本执行");
    }
}

第二步:

找到对应的脚本:在模型工具中右键打开或者直接在 us_sys.tb_model_clsscript表中把脚本内容拷贝出来,粘贴到新建好的类中

第三步:

挂接脚本,在对应的任务鼠标右键选择挂接脚本,把服务ID,服务名称填上即可。


这里写图片描述

第四步:

对于调度任务我们需要配置白名单

security.ignored=/jobScript/execute.do

3.3 工作流脚本

引入f1-interface-workflow。除了实现的接口不同,其他都和模型,调度任务挂接脚本一样。

流程环节实现:ProcessNodeUniteListener

流程迁移线实现:TransitionFilter

4 自己依赖jar包的升级

对于一些模块我们可能有自己引入的第三方jar包,可能和平台版本不兼容,这里建议对于以前旧的第三方包替换成支持jdk1.8的包。

5 移植前后项目对比

对于基于osgi的项目移植成微服务后项目结构要简单的多,没有那么多配置文件。

移植前项目结构


这里写图片描述

移植后的项目结构


这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值