最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot 代碼風(fēng)格推薦

 更新時間:2026年05月28日 15:27:16   作者:cadecode  
本文主要介紹了Spring Boot 項目定義了統(tǒng)一的包結(jié)構(gòu)與命名規(guī)范,涵蓋分層架構(gòu)、實體對象、工具類的命名與放置規(guī)則,強(qiáng)調(diào)各層對象隔離與技術(shù)層分,下面就來詳細(xì)的介紹一下

整體包結(jié)構(gòu)

com.example.project
│
├── bean                      # 實體類統(tǒng)一目錄
│   ├── entity                # 數(shù)據(jù)庫實體
│   ├── vo                    # 接口返回對象
│   ├── dto                   # 接口接收參數(shù)
│   ├── bo                    # 業(yè)務(wù)層聚合對象
│   ├── doc                   # MongoDB 文檔實體
│   ├── cache                 # 緩存實體對象
│   ├── index                 # ES 索引實體
│   ├── message               # MQ 消息體
│   └── event                 # Spring 事件對象
├── controller                # Web 接口層
├── service                   # 業(yè)務(wù)邏輯接口
│   └── impl                  # 業(yè)務(wù)邏輯實現(xiàn)
├── mapper                    # 數(shù)據(jù)訪問層
├── biz                       # 業(yè)務(wù)聚合處理
├── client                    # Feign 客戶端
├── convert                   # 對象轉(zhuǎn)換器
├── aspect                    # AOP 切面
├── config                    # 配置類
├── constant                  # 常量類
├── enums                     # 枚舉類
├── exception                 # 自定義異常
├── util                      # 工具類目錄(含 Util 和 Kit)
└── job                       # 定時任務(wù)
    ├── XxxJob.java
    └── XxxHelper.java        # 輔助類,放在對應(yīng)功能包內(nèi)

分層命名規(guī)范

層級職責(zé)類名后綴包名說明
Web 接口層?xxxController??controller?接收請求、參數(shù)校驗、返回 Vo
Service 接口?xxxService??service?業(yè)務(wù)邏輯接口定義
Service 實現(xiàn)?xxxServiceImpl??service.impl?業(yè)務(wù)邏輯實現(xiàn),加事務(wù)注解
數(shù)據(jù)訪問層?xxxMapper??mapper?MyBatis/MyBatis-Plus 映射接口
業(yè)務(wù)聚合處理?xxxBiz??biz?跨 Service 或外部調(diào)用的復(fù)雜業(yè)務(wù)編排
遠(yuǎn)程服務(wù)客戶端?xxxClient??client?Feign 聲明式 HTTP 客戶端
對象轉(zhuǎn)換器?xxxConvert??convert?統(tǒng)一處理對象轉(zhuǎn)換
AOP 切面?xxxAspect??aspect?橫切關(guān)注點(日志、權(quán)限、監(jiān)控等)
常量類?xxxConst??constant?常量按業(yè)務(wù)拆分,不堆在一個類中
枚舉類?xxxEnum??enums?統(tǒng)一管理枚舉定義
自定義異常?xxxException??exception?業(yè)務(wù)異常或系統(tǒng)異常
配置類?xxxConfig??config?如 RedisConfig?、SwaggerConfig?
定時任務(wù)?xxxJob??job?定時調(diào)度任務(wù)類
輔助類(業(yè)務(wù)/功能)?xxxHelper?對應(yīng)功能包內(nèi)如 job.JobHelper?、mail.MailHelper?

實體類命名規(guī)范

業(yè)務(wù)實體

對象類型類名后綴包路徑說明
數(shù)據(jù)庫實體?xxx? / XxxPo??bean.entity? / bean.po?與數(shù)據(jù)庫表結(jié)構(gòu)一一對應(yīng)
接口返回對象?xxxVo??bean.vo?面向前端展示
接口接收參數(shù)?xxxDto??bean.dto?接收請求參數(shù),可含校驗注解
業(yè)務(wù)層聚合對象?xxxBo??bean.bo?業(yè)務(wù)邏輯層內(nèi)部使用
MongoDB 文檔實體?xxxDoc??bean.doc?MongoDB 實體定義
緩存實體對象?xxxCache??bean.cache?Redis/Caffeine 緩存結(jié)構(gòu)
ES 索引實體?xxxIndex??bean.index?Elasticsearch 文檔映射
MQ 消息體?xxxMessage??bean.message?隊列/主題傳輸?shù)南Ⅲw
Spring 事件對象?xxxEvent??bean.event?領(lǐng)域事件或應(yīng)用事件對象

使用示例

// 保存用戶:接收 Dto,返回 Vo
@PostMapping("/save")
public SysUserVo saveUser(@RequestBody @Valid SysUserSaveDto dto) {
    SysUserPo po = userConvert.toPo(dto);
    userMapper.insert(po);
    return userConvert.toVo(po);
}

? 不要將 Entity? / Po? 直接返回給前端
? 各層對象嚴(yán)格隔離,降低變動影響面

業(yè)務(wù)之外的實體

對于獨立于業(yè)務(wù)之外的實體,如工具類、框架配置等需要的對象,有以下兩種處理方式:

方式適用場景示例
使用內(nèi)部類僅被當(dāng)前類使用、邏輯簡單、內(nèi)聚性強(qiáng)Controller 內(nèi)部的請求/響應(yīng)類、Service 內(nèi)部的中間對象
放在業(yè)務(wù)類一起與某個業(yè)務(wù)緊密相關(guān),但不屬于標(biāo)準(zhǔn)實體類型業(yè)務(wù)特有的參數(shù)封裝、中間計算結(jié)果對象

示例

方式一:使用內(nèi)部類(適用于僅當(dāng)前類使用)

@RestController
public class UserController {
    
    @PostMapping("/login")
    public Result login(@RequestBody LoginRequest request) {
        // ...
    }
    
    // 內(nèi)部類,僅用于當(dāng)前 Controller
    static class LoginRequest {
        private String username;
        private String password;
    }
}

方式二:放在業(yè)務(wù)類一起(適用于業(yè)務(wù)特有對象)

// 放在使用它的 Service 同包下,但不屬于標(biāo)準(zhǔn) bean 類型
// service/OrderStatContext.java
public class OrderStatContext {
    private Long userId;
    private LocalDateTime startTime;
    private LocalDateTime endTime;
    // 訂單統(tǒng)計的中間計算對象
}

選擇建議

  • 僅當(dāng)前類使用 → 內(nèi)部類
  • 業(yè)務(wù)特有但不屬于標(biāo)準(zhǔn) Entity/Vo/Dto/Bo → 放在對應(yīng)業(yè)務(wù)包下

工具類命名規(guī)范

類型命名后綴包位置是否靜態(tài)是否依賴容器說明
靜態(tài)工具類?xxxUtil??util?? 是? 否純靜態(tài)方法,無狀態(tài),不依賴 Spring
容器化工具類?xxxKit??util?? 否? 是需要注入 Bean,加 @Component?
輔助類(業(yè)務(wù)/功能)?xxxHelper?對應(yīng)功能包內(nèi)? 否? 是業(yè)務(wù)或功能專用,如 job.JobHelper?

示例代碼

Util(靜態(tài)調(diào)用)

public class DateUtil {
    public static String format(LocalDateTime date, String pattern) {
        // 靜態(tài)方法,不依賴 Spring
    }
}
// 使用
String dateStr = DateUtil.format(now, "yyyy-MM-dd");

Kit(注入使用,放在 util 包)

@Component
public class RedisKit {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }
}
// 使用
@Service
public class UserService {
    @Autowired
    private RedisKit redisKit;
}

Helper(功能專用,放在對應(yīng)功能包內(nèi))

// job/JobHelper.java
@Component
public class JobHelper {
    @Autowired
    private MailService mailService;
    
    public void sendAlert(String jobName, Exception e) {
        mailService.send("Job Alert", jobName + " 執(zhí)行失?。? + e.getMessage());
    }
}

到此這篇關(guān)于SpringBoot 代碼風(fēng)格推薦的文章就介紹到這了,更多相關(guān)SpringBoot 代碼風(fēng)格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java19新特性虛擬線程的具體使用

    Java19新特性虛擬線程的具體使用

    Java 19 引入了虛擬線程,這是 JDK Project Loom 項目中的重要新特性,目的是簡化 Java 中的并發(fā)編程,并提高線程管理的效率和性能,下面就來具體介紹下
    2024-09-09
  • Java的CopyOnWriteArrayList操作詳解

    Java的CopyOnWriteArrayList操作詳解

    這篇文章主要介紹了Java的CopyOnWriteArrayList操作詳解,  CopyOnWriteArrayList是ArrayList 的一個線程安全的變體,其中所有可變操作(add、set等等)都是通過對底層數(shù)組進(jìn)行一次新的復(fù)制來實現(xiàn)的,需要的朋友可以參考下
    2023-12-12
  • Java?Playwright實現(xiàn)瀏覽器最大化

    Java?Playwright實現(xiàn)瀏覽器最大化

    Playwright?是一個用于自動化?Web?應(yīng)用測試的現(xiàn)代工具,支持多種語言(包括?Java)及多個瀏覽器,本文主要介紹了Java如何使用Playwright實現(xiàn)瀏覽器最大化,需要的可以參考下
    2024-12-12
  • Maven依賴沖突的幾種有效解決方法總結(jié)

    Maven依賴沖突的幾種有效解決方法總結(jié)

    在項目開發(fā)中使用Maven管理Jar包時,常常會遇到Jar包依賴沖突,所以本文就給大家總結(jié)了幾種解決Maven依賴沖突的有效方法,需要的朋友可以參考下
    2023-07-07
  • Spring Boot 容器化Docker+K8s 部署最佳實踐

    Spring Boot 容器化Docker+K8s 部署最佳實踐

    本文介紹了Spring Boot應(yīng)用容器化部署的完整流程:從基礎(chǔ)環(huán)境準(zhǔn)備、示例項目搭建,到 Docker 鏡像構(gòu)建(基礎(chǔ)構(gòu)建法與多階段構(gòu)建法),再到 K8s 核心資源(Deployment、Service)的部署與驗證,最后拓展了鏡像優(yōu)化、K8s 進(jìn)階配置等實用技巧,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Java實現(xiàn)LeetCode(54.螺旋矩陣)

    Java實現(xiàn)LeetCode(54.螺旋矩陣)

    這篇文章主要介紹了Java實現(xiàn)LeetCode(螺旋矩陣),本文列出題目和寫題的思路。給出完整的解法代碼,需要的朋友可以參考下
    2021-06-06
  • java Hibernate多對多映射詳解及實例代碼

    java Hibernate多對多映射詳解及實例代碼

    這篇文章主要介紹了java Hibernate多對多映射詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Spring Bean的實例化之屬性注入源碼剖析過程

    Spring Bean的實例化之屬性注入源碼剖析過程

    本篇文章主要就是分析Spring源碼剖析-Bean的實例化-屬性注入的相關(guān)知識,通過本文學(xué)習(xí)AbstractAutowireCapableBeanFactory#populateBean 方法的主要功能就是屬性填充,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • JMeter連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟

    JMeter連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟

    本文主要介紹了JMeter操作Mysql數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 教你怎么用java一鍵自動生成數(shù)據(jù)庫文檔

    教你怎么用java一鍵自動生成數(shù)據(jù)庫文檔

    最近小編也在找這樣的插件,就是不想寫文檔了,浪費(fèi)時間和心情啊,果然我找到一款比較好用,操作簡單不復(fù)雜.screw 是一個簡潔好用的數(shù)據(jù)庫表結(jié)構(gòu)文檔的生成工具,支持 MySQL、Oracle、PostgreSQL 等主流的關(guān)系數(shù)據(jù)庫.需要的朋友可以參考下
    2021-05-05

最新評論

房产| 工布江达县| 千阳县| 秦皇岛市| 萍乡市| 宜宾县| 枣阳市| 新兴县| 玉溪市| 平顺县| 正定县| 黔南| 靖江市| 阜新市| 宣武区| 广东省| 肥西县| 锡林郭勒盟| 河间市| 黔东| 揭西县| 阳高县| 大竹县| 天镇县| 屯昌县| 怀仁县| 潮州市| 凯里市| 财经| 芜湖县| 鄂州市| 岑溪市| 若羌县| 天台县| 遵义市| 韩城市| 伊吾县| 凤城市| 阿巴嘎旗| 张家港市| 修水县|