關於如何重寫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重載了也是一樣的

這里寫圖片描述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM