版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。

所需知识准备

Springboot、继承、多态、面向接口编程、注解、spring底层机制


基本原理

  1. spring的controller内部Bean是final的单例模式,在系统初始化的时候可以进行引用对象覆盖

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

2..如果没有重写,加载的是基础平台返回的数据信息

3.service重载了也是一样的

关于如何重写Controller和Service技术攻关文档的更多相关文章

  1. 【Web Service】WSDL文档

    WSDL文档仅仅是一个简单的XML文档. 它包含一系列描述某个web service的定义. WSDL WSDL 是基于 XML 的语言,用于描述 Web services 以及如何访问它们. WSD ...

  2. BugPhobia进阶篇章:前端技术/设计文档

    0x01 :前端概述 0x0100 :前端基本描述 前端基础框架 Semantic UI 根据http://semantic-ui.com/提供的样例和文档,依据Version 2.1.4版本的特性进 ...

  3. 使用appledoc 生成技术API文档具体解释

    一. 首先安装 appledoc 第一步:使用终端命令进行下载安装 git clone git://github.com/tomaz/appledoc.git cd ./appledoc sudo s ...

  4. Spring注解之@Component、@Controller、@Service、@Repository

    目录 1.使用这四个注解的前提 2.详解@Component 3. @Service("XXX")或者@Service(value = "XXX")情况 4.总 ...

  5. 多模块打包后,扫描不到@controller和@service,实现 ADD DIRECTORY ENTRIES

    多模块打包后,扫描不到@controller和@service等Bean. 原因:打包时没有生成目录信息 解决办法: 1.在eclipse或者myeclipse 打包时 勾选 ADD DIRECTOR ...

  6. AngularJS中如何对Controller与Service进行分层设计与编码

    初学者的Controller 在我们当接触NG后,如需要通过访问远程的API获取一系列的数据进行显示,通常我的Controller代码会写成下面的样子: angular.module('demo') ...

  7. MVC中Controller控制器相关技术

    第6章Controller相关技术 Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并 且负责协调Model与View之间的数椐传递,是ASP.NET MV ...

  8. AngularJS:何时应该使用Directive、Controller、Service?

    AngularJS:何时应该使用Directive.Controller.Service? (这篇文章你们一定要看,尤其初学的人,好吗亲?) 大漠穷秋 译 AngularJS是一款非常强大的前端MVC ...

  9. Controller、Service、Dao进行Junit单元

    原文链接:http://blog.csdn.net/u013041642/article/details/71430293 Spring对Controller.Service.Dao进行Junit单元 ...

随机推荐

  1. PTA-多项式A除以B

    多项式A除以B 这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出一个非零多项式,先给出A, ...

  2. Java注解annotation : invalid type of annotation member

    前言 首先,关于注解的介绍就不多描述了,网上有很多这方面的资料.本文主要是介绍如何处理标题中遇到的问题:invalid type of annotation member ? 正文 Annotatio ...

  3. elementui 多组件表单验证

      最近在做管理后台,vue2.0基于elementui框架进行开发. elementui的api中表单验证都是单个vue文件的验证.而我的保存按钮放在了父组件了,验证对象为三个子组件我的灵机一动 想 ...

  4. yarn cluster和yarn client模式区别——yarn-cluster适用于生产环境,结果存HDFS;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出

    Yarn-cluster VS Yarn-client 从广义上讲,yarn-cluster适用于生产环境:而yarn-client适用于交互和调试,也就是希望快速地看到application的输出. ...

  5. python网络-HTTP协议(28)

    一.服务器和客户端介绍 1.什么是服务器? 简而言之:提供服务的机器就是服务器,至于提供什么服务不重要,重要的是要给其他人提供服务.例如:FTP服务器可以提供文件下载,SMTP服务器等等,不同的服务器 ...

  6. 抖音热门BGM爬虫下载

    下午无聊在某网上刷了会儿抖音,发现有些音乐还是挺好听的,可以用来做手机铃声,于是想办法从某网上把歌曲爬下来 附上代码: #!/usr/bin/env python # -*- coding: utf- ...

  7. python同时取每个列表的第一个元素

    在实际爬虫开发中, 经常用到列表保存数据, 在使用这些数据的时候,需要要取每个列表里的第一个元素进行拼接. 就需要用到python的内置方法:“zip()" # 现在有3个列表:li_1, ...

  8. 为何基于tcp协议的通信比基于udp协议的通信更可靠?

    tcp协议一定是先建好双向链接,发一个数据包要得到确认才算发送完成,没有收到就一直给你重发:udp协议没有链接存在,udp直接丢数据,不管你有没有收到. TCP的可靠保证,是它的三次握手双向机制,这一 ...

  9. Calling Extraterrestrial Intelligence Again POJ 1411

    题目链接:http://poj.org/problem?id=1411 题目大意:找两个素数p,q满足a/b<=p/q<=1 且p*q<=m,求p*q最大的一组素数对. 第一次想的是 ...

  10. Golang 内存管理