自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

搭建腳手架的一些經(jīng)驗,你學(xué)到了嗎?

開發(fā) 開發(fā)工具
Spring內(nèi)部的工具類和apache common包的工具類已經(jīng)足夠應(yīng)付大部分情況,如果真的不滿足再考慮去寫工具類,工具類解決的一定是局部問題,不要把業(yè)務(wù)功能相關(guān)的東西封裝成工具類。

印象中有些日子沒有寫文章了,最近一直在放飛自我,今天和大家分享的一些在搭建腳手架和編程中的一些實踐原則。所有目標都是“清晰架構(gòu)分層”。

使用統(tǒng)一的依賴管理

這種方式是基于我多年來的實踐。最開始我也將項目類庫及其版本隨意的管理,大部分情況下它們能夠正常的工作,遇到版本升級和依賴沖突就很頭疼。于是模仿一些知名開源的依賴的管理,定制自己的BOM,就像這樣:

<dependencyManagement> 
<dependencies>
<dependency>
<groupId>cn.felord.</groupId>
<artifactId>my-bom</artifactId>
<version>1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

這樣你的依賴管理將非常清晰, 在升級第三方依賴或者增減依賴的時候,只需要升級這個依賴的版本即可。

約定大于配置

眾所周知Spring Boot的一個重要的特點就是約定大于配置。但是我在一些開源腳手架和一些項目中看到的卻不是延續(xù)這一思想,用了大量的代碼實現(xiàn)了一些可有可無的自定義配置。比如我在某個項目的Spring Security依賴中看到,自定義了所有的默認配置,將簡單的問題復(fù)雜化卻收效甚微,默認提供的PasswordEncoder不好用嗎?能復(fù)用就復(fù)用,用最少的配置解決問題。

MVC分工應(yīng)該專注和簡潔

控制器

關(guān)于控制器,也就是Controller,它更多的角色應(yīng)該是一個協(xié)調(diào)者和委托者,而不承擔(dān)具體業(yè)務(wù)邏輯的執(zhí)行工作??刂破鲬?yīng)該專注于HTTP層面的功能,比如參數(shù)的綁定處理,序列化和反序列化,具體的業(yè)務(wù)委托給下游的服務(wù)層。

還有一個點就是接口的命名風(fēng)格要一致,還要有層次感和語義化。比如/api/user/{id}、/api/order/{id}、/api/order/user/{id}。

服務(wù)層

服務(wù)層我遇到的問題就是出口分散問題,很多同學(xué)訂單的出口可能根據(jù)某些原因分散在其它的服務(wù)層接口,而不是集中于OrderService中。大多數(shù)情況下,我覺得集中管理有利于后續(xù)的迭代維護,保證了各個Domain業(yè)務(wù)之間的相對獨立性。

還有一點,同一個Spring容器下服務(wù)層之間的相互調(diào)用容易引起依賴循環(huán)問題,比如UseService要調(diào)用OrderService查詢訂單,而OrderService可能又依賴了UserService,最好的辦法是服務(wù)層之間盡量不相互調(diào)用,去調(diào)用持久層的OrderMapper,當然一些功能性的接口服務(wù)例外,例如短信服務(wù)、三方接口這一類。

說到短信服務(wù)、三方接口,這一類穩(wěn)定的業(yè)務(wù)功能建議作為類庫集成,既方便管理又可重用。

工具類

Spring內(nèi)部的工具類和apache common包的工具類已經(jīng)足夠應(yīng)付大部分情況,如果真的不滿足再考慮去寫工具類,工具類解決的一定是局部問題,不要把業(yè)務(wù)功能相關(guān)的東西封裝成工具類。

責(zé)任編輯:武曉燕 來源: 碼農(nóng)小胖哥
相關(guān)推薦

2021-07-29 18:46:52

可視化類型圖形化

2022-09-27 08:28:54

云平臺云主機私有云

2023-11-21 17:36:04

OpenFeignSentinel

2021-01-07 05:34:07

腳手架JDK緩存

2021-04-11 07:33:03

開發(fā)Vue技術(shù)棧js

2021-09-03 06:46:34

MyBatis緩存后端

2021-12-23 10:35:32

SpringCloud腳手架架構(gòu)

2024-08-12 15:44:06

2016-08-10 14:59:41

前端Javascript工具

2024-03-11 13:18:00

RustClap項目

2021-12-26 18:30:56

嵌入式ARM鏈接

2020-08-19 08:55:47

Redis緩存數(shù)據(jù)庫

2020-05-19 10:13:45

Java開發(fā)代碼

2016-09-07 15:35:06

VueReact腳手架

2020-07-21 18:54:21

Rust類型轉(zhuǎn)換語言

2021-04-28 16:10:48

開發(fā)腳手架 Spring

2023-10-16 08:55:43

Redisson分布式

2021-05-13 17:02:38

MDC腳手架日志

2021-04-13 14:47:53

認證授權(quán)Java

2021-07-13 18:42:38

Spring Boot腳手架開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號