一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于idea 的 Java中的get/set方法之優雅的寫法

基于idea 的 Java中的get/set方法之優雅的寫法

2021-07-01 14:18徐劉根 Java教程

這篇文章主要介紹了基于idea 的 Java中的get/set方法之優雅的寫法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

曾幾何時,我們寫代碼的時候,每次寫bean的時候都會使用快捷鍵生成get/set方法,有時候我經常會想,既然每一個bean我們都會給其提供get/set方法,那么為什么還有會這個東西哪?(當然這只是一個問題,畢竟還是很有用的,這一點就是java語言中的private、public等作用域)

今天說的當然不是這個,我們討論的是希望有一種優雅的方式編寫我們的get/set方法或者說是一種優雅的簡化。那我們就說一下今天的主角吧!

lombok

java代碼簡化神器!就是如此美妙!

lombok是一個可以通過簡單的注解形式來幫助我們簡化消除一些必須有但顯得很臃腫的java代碼的工具,通過使用對應的注解,可以在編譯源碼的時候生成對應的方法。

https://projectlombok.org/

https://github.com/rzwitserloot/lombok

如何使用

1、安裝idea插件lombok plugin

基于idea 的 Java中的get/set方法之優雅的寫法

2、引入pom,最新版本為1.16.18

基于idea 的 Java中的get/set方法之優雅的寫法

3、簡單使用,設置get/set方法

基于idea 的 Java中的get/set方法之優雅的寫法

4、稍微復雜一點的使用

基于idea 的 Java中的get/set方法之優雅的寫法

其他使用

上述只是展示了幾個最常用的特性,其他的還有很多,例如:

@nonnull、 @java.lang.override、@data、@sneakythrows、@synchronized、@cleanup

具體的使用可以參考官方文檔,這里只是給大家介紹一下如此美妙的東西!

q:這么好的東西,他是什么原理哪?

a:首先我們應該清楚,我們第一步是需要安裝idea的插件,只有安裝了插件我們才可以在代碼中直接使用get和set方法,如果沒有話他會直接報錯的,就是沒有get和set方法,安裝了插件我們就可以使用這些方法,并且在編譯之后的class文件中也是有這些方法的。當然,為什么裝了插件之后就可以調用了,這個問題太過深奧,這里不再細聊,有興趣的可以參考相關文章進行學習。

一些思考

看到這里,很多人要說了,我使用的要么是ssm框架,要么是ssh框架,這些框架都可以使用逆向工程的方式生成我們的代碼,當然包括bean,我們在使用逆向工程的時候,get/set方法不都是自動生成的嗎?使用這個lombok盡管優美,我們還不是需要進行自己寫注解的嗎?

首先,我們先聊一下最近一個比較火的領域驅動設計中的貧血、失血、脹血和充血模型。

什么是貧血失血充血模型呢?簡單來說:

1、失血模型:模型僅僅包含類的屬性和getter/setter方法,業務邏輯和應用邏輯都放到服務層中。這種類在java中叫pojo或者bean。

2、貧血模型:貧血模型中包含了一些業務邏輯,但不包含依賴持久層的業務邏輯。這部分依賴于持久層的業務邏輯將會放到服務層中??梢钥闯觯氀P椭械念I域對象是不依賴于持久層的。

3、充血模型:充血模型中包含了所有的業務邏輯,包括依賴于持久層的業務邏輯。所以,使用充血模型的領域層是依賴于持久層,簡單表示就是 ui層->服務層->領域層<->持久層。

4、脹血模型:脹血模型就是把和業務邏輯不相關的其他應用邏輯(如授權、事務等)都放到領域模型中,這是一種極差的設計方式。

看到這里,可能大家一臉迷茫!這樣說吧,領域驅動模型設計的一個特點是對于一個實體對象,它不但有相關的屬性還要有其自身的方法(他的能力,可以做的事情)。

舉個栗子:一個user類,不但要有人的基本屬性,還要有這個人能做的事情(不僅僅是get/set方法)但是,這一看就是一個充血模型,但是只有基本的屬性和get/set方法的話他就是一個失血模型了,因此對于領域驅動來說,我們可以這樣操作,通過一個dto包含其所有的基本屬性和get/set方法,然后領域實體對象繼承這個dto,當然這只是一種用法!

基于idea 的 Java中的get/set方法之優雅的寫法

圖:領域驅動的一種使用模式

因此對于一個充血模型的領域驅動實體對象來說,他不但有屬性還有他的各種方法,如果整個的都放在一個類里的話根本不好區分他到底是get/set方法還是其他功能方法,這里我們使用lombok提供的注解的方式就刻意很完美的解決這個在編碼過程中造成的不適感!

當然,對于領域驅動模型的研究還有很多,這里只是簡單的介紹了我使用過的一種方式,僅供參考!

回過頭來看

看到這里,貌似饒了一大圈還是沒有說明白,我使用ssm好好的,然后代碼都是自動生成的,我為什么還需要使用和這個lombok哪?

其實不然,上述在介紹領域驅動的時候,我們也可以看到使用lombok確實可以簡化很多編輯器中顯示的代碼,是一種很優雅和美觀的體現!

那我數據庫有100多個表,又沒法使用以前的逆向工具生成代碼,我該怎么辦哪?當然是造---造輪子了!

使用過mybatis的朋友很多都知道,可以很方便的使用逆向工程生成我們需要的代碼,我們如果引入lombok的話,我們只有把他加入到逆向工程里生成我們的代碼才可以避免龐大的工作量。

估計有些小伙伴們已經方了,這么高大上的東西自己怎么可能搞定那?不用擔心,我個人曾經嘗試過使用簡單的代碼實現類似的代碼生成工具。當你去嘗試的時候,就會知道,也不過如此!過程大致是這樣的:

基于idea 的 Java中的get/set方法之優雅的寫法

看一個簡單的freemarker的關于bean的一個簡單模板配置,雖然看著復雜,但是都結構化的格式,使用模板配置我們不但可以生成bean、還可以生成service、controller等任何我們需要的代碼:

基于idea 的 Java中的get/set方法之優雅的寫法

當然,我們也可以在開源項目的基礎上進行修改的,這樣的話更加容易一些!常見的有mybatis-plus提供的一個代碼生成工具,可以參考!

好啦!今天給大家介紹了代碼簡化神器lombok,還有代碼生成器的基本思路,有了lombok!就讓我們忘了java代碼中冗長雜亂的get/set方法吧!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/Jerry_NYL/article/details/80813762

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 厨房play黄瓜进入 | 操比图片 | 男女激情网 | 好大好硬好深好爽gif图 | 国产精品乱码高清在线观看 | 青青国产成人久久激情91麻豆 | 91热爆| 高中生放荡日记高h娜娜 | 美女gif跪趴式抽搐动态图 | 亚洲无毛片 | 俄罗斯引擎首页进入 | 亚洲高清无码在线 视频 | 午夜性色一区二区三区不卡视频 | 色婷亚洲 | 色老板在线免费视频 | 国产精品久久久久一区二区三区 | 草草草在线| 日本视频在线免费观看 | 69av美女| 午夜福利院电影 | 国产精品久久久久久久牛牛 | www.国产一区二区三区 | 欧美日韩1区 | 日本 视频 在线 | 欧美成人精品福利在线视频 | 777奇米影视一区二区三区 | 999精品视频这里只有精品 | 国产一区二区免费视频 | 香蕉eeww99国产精选播放 | 91国内精品 | 羞羞答答免费人成黄页在线观看国产 | 午夜AV国产欧美亚洲高清在线 | 亚洲国产成人综合 | 国产三级精品91三级在专区 | 369看片网| 884aa在线看片 | 青青久久精品国产免费看 | 精品国产品香蕉在线观看 | 吉泽明步高清无码中文 | 天堂伊人| 亚洲精品午夜在线观看 |