java|关于如何重写Controller和Service技术攻关文档

所需知识准备 Springboot、继承、多态、面向接口编程、注解、spring底层机制
基本原理

  1. spring的controller内部Bean是final的单例模式,在系统初始化的时候可以进行引用对象覆盖
  2. spring打包的时候,不需要默认的
    java|关于如何重写Controller和Service技术攻关文档
    文章图片

因为他在打成war(jar)包会把class文件进行保护,放到BOOT-INF下面,导致外部无法进行重写和重构
3. 静态类和静态方法是无法进行重写的
4. 使用一个接口,来派生出多个接口实现类,达到高可用状态
5. 不使用@SpringBootApplication启动的情况下,可以使用自定义来确定启动类
java|关于如何重写Controller和Service技术攻关文档
文章图片

6. 配置类需要设定spring的bean扫描包信息
java|关于如何重写Controller和Service技术攻关文档
文章图片

具体例子
基础平台
首先创建第一个spingboot的项目(以下简称A项目),如果不知道如何创建springboot项目,请自行百度。
在A项目中的pom.xml文件中去除spring打包配置,进行删除
java|关于如何重写Controller和Service技术攻关文档
文章图片

设置本地maven工具包。具体相关的maven包,请查看附件
java|关于如何重写Controller和Service技术攻关文档
文章图片

在pom文件中设置maven发包配置
java|关于如何重写Controller和Service技术攻关文档
文章图片

编写自己的service接口
java|关于如何重写Controller和Service技术攻关文档
文章图片

编写自己的service实现类
java|关于如何重写Controller和Service技术攻关文档
文章图片

编写自己的controller
java|关于如何重写Controller和Service技术攻关文档
文章图片

编写spring启动文件,并且设置controller扫描路径(如果和controller在同一级下面就不用设置)
java|关于如何重写Controller和Service技术攻关文档
文章图片

编写对外支持的spring配置文件信息,并且设置扫描路径(controller和service)
java|关于如何重写Controller和Service技术攻关文档
文章图片

编写配置文件信息,设置spring的初始化类
java|关于如何重写Controller和Service技术攻关文档
文章图片

点击运行,查看是否运行成功,注意如果存在端口冲突,可以在application.properties中设置server.post:端口号
java|关于如何重写Controller和Service技术攻关文档
文章图片

发包到私服上面去,如果是重复发布需要先删除私服上面的包或者设置私服可以重复发布。每次发布必须版本号更新。Maven执行顺序,clean,complie,deploy
java|关于如何重写Controller和Service技术攻关文档
文章图片

查看私服上面有没有包文件。
java|关于如何重写Controller和Service技术攻关文档
文章图片

其他平台或产品平台
首先创建spingboot的项目(以下简称B项目),如果不知道如何创建springboot项目,请自行百度。
设置本地maven工具包。具体相关的maven包,请查看附件
java|关于如何重写Controller和Service技术攻关文档
文章图片

在B项目中的pom.xml文件中引用A项目
java|关于如何重写Controller和Service技术攻关文档
文章图片

在pom文件中设置maven发包配置
java|关于如何重写Controller和Service技术攻关文档
文章图片

可以重写引用包的servier实现,用继承或者接口进行实现。建议使用继承
java|关于如何重写Controller和Service技术攻关文档
文章图片

重写service实现,需要加入配置文件重新写Bean信息,切记如果A项目中对于Service定义了Bean的名字,那么重写以后,定义Bean的时候,必须要名字一样。
例如:A项目中定义了service的名字叫做testService,
B项目中如果重写了,必须要在配置文件中重写Bean的申明。而且名字必须一样。
下图1中:由于我是按照接口进行申明的,所以,返回的是接口类型。而实际的是类的初始化。
另:如果controller(Service)中父类注入了其他的bean信息,可以直接在初始化方法里面进行注入。Spring会默认注入相关参数。详情见下图2,
java|关于如何重写Controller和Service技术攻关文档
文章图片

图1
java|关于如何重写Controller和Service技术攻关文档
文章图片

图2
重写controller和service是一样的操作步骤,都是注意bean的名字信息必须一致
java|关于如何重写Controller和Service技术攻关文档
文章图片

java|关于如何重写Controller和Service技术攻关文档
文章图片

启动项目
启动以后,就可以查看到映射的地址和基础平台里面的一样。而加载的类是不一样的
java|关于如何重写Controller和Service技术攻关文档
文章图片

检查 1.加载的是二开平台或产品平台重写过的数据信息 ![这里写图片描述](https://img-blog.csdn.net/20180821112153260?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTc4NDc1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

2..如果没有重写,加载的是基础平台返回的数据信息
java|关于如何重写Controller和Service技术攻关文档
文章图片

3.service重载了也是一样的
【java|关于如何重写Controller和Service技术攻关文档】java|关于如何重写Controller和Service技术攻关文档
文章图片

    推荐阅读