关于如何重写Controller和Service技术攻关文档
所需知识准备
Springboot、继承、多态、面向接口编程、注解、spring底层机制
基本原理
spring的controller内部Bean是final的单例模式,在系统初始化的时候可以进行引用对象覆盖
spring打包的时候,不需要默认的
因为他在打成war(jar)包会把class文件进行保护,放到BOOT-INF下面,导致外部无法进行重写和重构
3. 静态类和静态方法是无法进行重写的
4. 使用一个接口,来派生出多个接口实现类,达到高可用状态
5. 不使用@SpringBootApplication启动的情况下,可以使用自定义来确定启动类
6. 配置类需要设定spring的bean扫描包信息
具体例子
基础平台
首先创建第一个spingboot的项目(以下简称A项目),如果不知道如何创建springboot项目,请自行百度。
在A项目中的pom.xml文件中去除spring打包配置,进行删除
设置本地maven工具包。具体相关的maven包,请查看附件
在pom文件中设置maven发包配置
编写自己的service接口
编写自己的service实现类
编写自己的controller
编写spring启动文件,并且设置controller扫描路径(如果和controller在同一级下面就不用设置)
编写对外支持的spring配置文件信息,并且设置扫描路径(controller和service)
编写配置文件信息,设置spring的初始化类
点击运行,查看是否运行成功,注意如果存在端口冲突,可以在application.properties中设置server.post:端口号
发包到私服上面去,如果是重复发布需要先删除私服上面的包或者设置私服可以重复发布。每次发布必须版本号更新。Maven执行顺序,clean,complie,deploy
查看私服上面有没有包文件。
其他平台或产品平台
首先创建spingboot的项目(以下简称B项目),如果不知道如何创建springboot项目,请自行百度。
设置本地maven工具包。具体相关的maven包,请查看附件
在B项目中的pom.xml文件中引用A项目
在pom文件中设置maven发包配置
可以重写引用包的servier实现,用继承或者接口进行实现。建议使用继承
重写service实现,需要加入配置文件重新写Bean信息,切记如果A项目中对于Service定义了Bean的名字,那么重写以后,定义Bean的时候,必须要名字一样。
例如:A项目中定义了service的名字叫做testService,
B项目中如果重写了,必须要在配置文件中重写Bean的申明。而且名字必须一样。
下图1中:由于我是按照接口进行申明的,所以,返回的是接口类型。而实际的是类的初始化。
另:如果controller(Service)中父类注入了其他的bean信息,可以直接在初始化方法里面进行注入。Spring会默认注入相关参数。详情见下图2,
图1
图2
重写controller和service是一样的操作步骤,都是注意bean的名字信息必须一致
启动项目
启动以后,就可以查看到映射的地址和基础平台里面的一样。而加载的类是不一样的
检查
1.加载的是二开平台或产品平台重写过的数据信息

- 1
- 2
- 3
2..如果没有重写,加载的是基础平台返回的数据信息
3.service重载了也是一样的
关于如何重写Controller和Service技术攻关文档的更多相关文章
- 【Web Service】WSDL文档
WSDL文档仅仅是一个简单的XML文档. 它包含一系列描述某个web service的定义. WSDL WSDL 是基于 XML 的语言,用于描述 Web services 以及如何访问它们. WSD ...
- BugPhobia进阶篇章:前端技术/设计文档
0x01 :前端概述 0x0100 :前端基本描述 前端基础框架 Semantic UI 根据http://semantic-ui.com/提供的样例和文档,依据Version 2.1.4版本的特性进 ...
- 使用appledoc 生成技术API文档具体解释
一. 首先安装 appledoc 第一步:使用终端命令进行下载安装 git clone git://github.com/tomaz/appledoc.git cd ./appledoc sudo s ...
- Spring注解之@Component、@Controller、@Service、@Repository
目录 1.使用这四个注解的前提 2.详解@Component 3. @Service("XXX")或者@Service(value = "XXX")情况 4.总 ...
- 多模块打包后,扫描不到@controller和@service,实现 ADD DIRECTORY ENTRIES
多模块打包后,扫描不到@controller和@service等Bean. 原因:打包时没有生成目录信息 解决办法: 1.在eclipse或者myeclipse 打包时 勾选 ADD DIRECTOR ...
- AngularJS中如何对Controller与Service进行分层设计与编码
初学者的Controller 在我们当接触NG后,如需要通过访问远程的API获取一系列的数据进行显示,通常我的Controller代码会写成下面的样子: angular.module('demo') ...
- MVC中Controller控制器相关技术
第6章Controller相关技术 Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并 且负责协调Model与View之间的数椐传递,是ASP.NET MV ...
- AngularJS:何时应该使用Directive、Controller、Service?
AngularJS:何时应该使用Directive.Controller.Service? (这篇文章你们一定要看,尤其初学的人,好吗亲?) 大漠穷秋 译 AngularJS是一款非常强大的前端MVC ...
- Controller、Service、Dao进行Junit单元
原文链接:http://blog.csdn.net/u013041642/article/details/71430293 Spring对Controller.Service.Dao进行Junit单元 ...
随机推荐
- php数组,常量,遍历等
php常量,常量是不能被改变的,由英文字母,下划线,和数字组成,但是数字不能作为首字母出现. bool define ( string $name , mixed $value [, bool $ca ...
- [S32K]FreeRTOS使用
参考官方: Tutorial: FreeRTOS 10.0.1 with NXP S32 Design Studio 2018.R1 (官方component是V8.2.1,此文档介绍如何升级到V10 ...
- 【HICP Gauss】数据库 数据库管理(调优 启动流程)-4
数据库参数: 创建数据库 调优数据库 其他---->控制资源使用 控制数据库内部机制 设置重要属性 参数数据保存在cfg/Zengine.ini 文件中 参数保存使用 key=value的保存形 ...
- jQuery + ashx 实现图片按比例预览、异步上传及显示
目录(?)[-] 注ajax 方式异步读取数据库显示图片的方法同上传一致使用 ashx 返回base64字符串在客户端处理即可 记录一个让我纠结良久的问题 在Page_Load 函数中只有第一个用 S ...
- xinetd配置文件
xinetd是一个超级守护进程xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器.经常用来管理多 种轻量级Int ...
- python链式对比
参考 https://www.cnblogs.com/shanghongyun/p/10519579.html 为什么Python中“2==2>1”结果为True在Python中,你可能会发现这 ...
- DT二次开发之-采购页面加入好看的倒计时
加入采购页面倒计时,个人感觉挺漂亮的,做下笔记. <span id="timer" ></span> {if $totime} <script typ ...
- 2019CCPC网络赛 HDU 6702——找规律
题意 给定 $A,B$(都是正整数),求使得 $(A\ xor\ C) \& (B \ xor \ C)$ 最小的正整数 $C$,如果有多个满足条件的 $C$,输出最小的 $C$. 分析 ...
- XAMPP环境搭建WordPress,DVWA
本周学习内容: 1.学习MySQL数据库.Linux.PHP开发: 2.复习等级培训内容: 3.使用xampp环境安装WordPress,学习WordPress数据库表的设计: 4.使用xampp安装 ...
- C位运算符的使用
#include <stdio.h> int main(void) { //位运算符 & | ^ ~ printf("8|2=%d\n",8|2);// 10 ...