zoukankan      html  css  js  c++  java
  • 关于如何重写Controller和Service技术攻关文档

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/weixin_39784756/article/details/81904254

    所需知识准备

    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重载了也是一样的

    这里写图片描述

  • 相关阅读:
    About Face 摘录
    断言的使用
    C#中值传递和引用传递
    C++技巧之断言Assert
    About Face 一 目标导向设计
    About Face 二 设计行为与形态
    C++中引用传递与指针传递区别
    一个新的时代SoLoMo
    离散数学笔记算法部分
    汪教授的离散数学20110308 谓词与量词2
  • 原文地址:https://www.cnblogs.com/guohu/p/11363049.html
Copyright © 2011-2022 走看看