关于如何重写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单元 ...
随机推荐
- c# Regex类
- mysql 压力测试工具sysbench
2.1 只读示例 ./bin/sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=1 ...
- Python通过lxml库遍历xml通过xpath查询(标签,属性名称,属性值,标签对属性)
xml实例: 版本一: <?xml version="1.0" encoding="UTF-8"?><country name="c ...
- Vue当中的this
10事件绑定 methods当中的this就是Vue实例对象vm var vm = new Vue({ el: '#app', data: { num: 0 }, // 注意点: 这里不要忘记加逗号 ...
- LOJ129 Lyndon 分解
Lyndon 分解 样例 样例输入 1 ababa 样例输出 1 2 4 5 样例输入 2 bbababaabaaabaaaab 样例输出 2 1 2 4 6 9 13 18 样例输入 3 azAZ0 ...
- python同时取每个列表的第一个元素
在实际爬虫开发中, 经常用到列表保存数据, 在使用这些数据的时候,需要要取每个列表里的第一个元素进行拼接. 就需要用到python的内置方法:“zip()" # 现在有3个列表:li_1, ...
- 求序列A中每个数的左边比它小的数的个数(树状数组)
给定一个有N个正整数的序列A(N<=10^5,A[i]<=10^5),对序列中的每一个数,求出序列中它左边比它小的数的个数. 思路:树状数组的经典应用(裸题) #include <i ...
- Dubbo生产者和消费者经典案例
一.导入依赖 <dependency> <groupId>javaee</groupId> <artifactId>javaee-api</art ...
- MongoDB 复制集监控
1.复制集状态查询:rs.status() 2.查看当前副本集oplog状态:rs.printReplicationInfo() 3.查看复制延迟:rs.printSlaveReplicationIn ...
- LINQPad 应用
https://www.linqpad.net/ 使用 LINQPad 调试linq以及lambda表达式 http://www.studyofnet.com/news/1168.html linq ...