日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java接口构建英雄属性_Java开发学习心得(三):项目结构

發(fā)布時(shí)間:2025/3/19 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java接口构建英雄属性_Java开发学习心得(三):项目结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3 項(xiàng)目結(jié)構(gòu)

經(jīng)過前面一系列學(xué)習(xí),差不多對(duì)Java的開發(fā)過程有了一定的了解,為了能保持一個(gè)良好的項(xiàng)目結(jié)構(gòu),考慮到接下來要進(jìn)行開發(fā),還需要學(xué)習(xí)一下Java的項(xiàng)目結(jié)構(gòu)

下面以兩個(gè)項(xiàng)目結(jié)構(gòu)為參照

圖1

圖2

第一個(gè)是我自己學(xué)習(xí)時(shí)的Demo,一邊學(xué)一邊建文件,應(yīng)該有些錯(cuò)誤的地方,第二張是從網(wǎng)上看到的一個(gè)結(jié)構(gòu)比較清晰的圖片

圖1的結(jié)構(gòu)完整一點(diǎn),就以圖1為主一點(diǎn)點(diǎn)講起

3.1 src

因?yàn)槲矣玫氖荕aven,大方向上項(xiàng)目?jī)纱笪募A分別是src和target,以及一個(gè)pom.xml配置文件,src目錄里是項(xiàng)目工程的源碼文件,配置文件和資源文件等,其下一級(jí)是main和test這兩個(gè)文件夾

3.1.1 main

main文件夾下是主要的工程源文件,然后下面又是兩個(gè)文件夾:java和resources,其實(shí)上面也講了,而且顧名思義,java里面是源碼文件,resources里面是資源文件

3.1.1.1 java

這之下的文件結(jié)構(gòu)可以參考上面的圖2了,大體上就是model-mapper-service-controller,其他還有公共類和表現(xiàn)層等,這里在下面單獨(dú)分一個(gè)章節(jié)來說

3.1.1.2 resources

資源文件夾默認(rèn)就是這個(gè)樣子,application.properties是用來填寫各種配置的,比如數(shù)據(jù)庫(kù)連接的配置信息、日志組件的配置信息等,有些人會(huì)改成yml后綴名,里面的格式就不盡相同了,在前面也講過,這里就不再贅述。

除此之外,各種組件的配置文件也在這個(gè)文件夾下

還有一個(gè)主要的作用是存放靜態(tài)文件資源,包括需要訪問的jsp、html、css、js、圖片等,還有代碼模板

  • 項(xiàng)目配置文件:resources/application.yml
  • 靜態(tài)資源目錄:resources/static/ ——用于存放html、css、js、圖片等資源
  • 視圖模板目錄:resources/templates/ ——用于存放jsp、thymeleaf等模板文件
  • mybatis映射文件:resources/mapper/(mybatis項(xiàng)目)
  • mybatis配置文件:resources/mapper/config/(mybatis項(xiàng)目)
  • 3.1.2 test

    如題所述,單元測(cè)試用的

    3.2 target

    target是有存放項(xiàng)目構(gòu)建后的文件和目錄,jar包、war包、編譯的class文件等

    target里的所有內(nèi)容都是maven構(gòu)建的時(shí)候生成的

    jar 包就是 java archive file java 的一種文檔格式。jar文件非常類似zip

    WAR是Sun提出的一種Web應(yīng)用程序格式,與JAR類似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來組織: 通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會(huì)有一個(gè)WEB-INF目錄,這個(gè)目錄很重要。通常在WEB-INF目錄下有一個(gè)web.xml文件和一個(gè)classes目錄,web.xml是這個(gè)應(yīng)用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。

    通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當(dāng)然也可以放到系統(tǒng)的CLASSPATH中,但那樣移植和管理起來不方便

    target里的所有內(nèi)容都是maven構(gòu)建的時(shí)候生成的

    4 Java的工程文件結(jié)構(gòu)

    傳統(tǒng)的三層不用再解釋了,在Java里對(duì)應(yīng)數(shù)據(jù)訪問層的是DAO,進(jìn)行數(shù)據(jù)交互,對(duì)應(yīng)業(yè)務(wù)邏輯層的是Service層,這里寫邏輯代碼,然后就是UI層

    4.1 幾種對(duì)象的解釋

    上面提到DAO,這里簡(jiǎn)單說說一些相關(guān)的簡(jiǎn)寫,在一些源碼里看到了,初學(xué)時(shí)有點(diǎn)懵

  • PO(persistant object): 持久對(duì)象,可以看成是與數(shù)據(jù)庫(kù)中的表相映射的java對(duì)象。最簡(jiǎn)單的PO就是對(duì)應(yīng)數(shù)據(jù)庫(kù)中某個(gè)表中的一條記錄,多個(gè)記錄可以用PO的集合。PO中應(yīng)該不包含任何對(duì)數(shù)據(jù)庫(kù)的操作。實(shí)體
  • VO(value object):值對(duì)象,通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對(duì)象,可以和表對(duì)應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要。可能就是Get/Set?
  • DAO(Data Access Object):數(shù)據(jù)訪問對(duì)象,用于訪問數(shù)據(jù)庫(kù),里面包含對(duì)數(shù)據(jù)庫(kù)的各種操作,配合VO進(jìn)行CRUD
  • DTO(Data Transfer Object):數(shù)據(jù)傳輸對(duì)象,是一組需要跨進(jìn)程或網(wǎng)絡(luò)邊界傳輸?shù)木酆蠑?shù)據(jù)的簡(jiǎn)單容器。它不應(yīng)該包含業(yè)務(wù)邏輯,并將其行為限制為諸如內(nèi)部一致性檢查和基本驗(yàn)證之類的活動(dòng)。我一開始以為是業(yè)務(wù)實(shí)體,但是看說明不是一個(gè)東西,那個(gè)是BO。
  • DTO的用法: 比如我們一張表有100個(gè)字段,那么對(duì)應(yīng)的PO就有100個(gè)屬性。但是我們界面上只要顯示10個(gè)字段,客戶端用WEB service來獲取數(shù)據(jù),沒有必要把整個(gè)PO對(duì)象傳遞到客戶端,這時(shí)我們就可以用只有這10個(gè)屬性的DTO來傳遞結(jié)果到客戶端,這樣也不會(huì)暴露服務(wù)端表結(jié)構(gòu).到達(dá)客戶端以后,如果用這個(gè)對(duì)象來對(duì)應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為VO。DTO還有減少請(qǐng)求的次數(shù)、簡(jiǎn)化傳輸對(duì)象、避免代碼重復(fù)等作用。 5. ORM(O/R Mapping,Object Relational Mapping):對(duì)象關(guān)系映射

    4.2 實(shí)際的項(xiàng)目文件應(yīng)該如何設(shè)計(jì)

    可以參考圖2

  • bean也就是實(shí)體了,對(duì)應(yīng)數(shù)據(jù)庫(kù)的字段
  • DAO,前面也說過了,不過里面寫法可以細(xì)分很多種,使用Mybatis就是Mapper接口文件或者是xml的寫法,如果還使用了JPA,還會(huì)有個(gè)repository類文件
  • Service,這塊好像寫法的爭(zhēng)議比較多,可以看看這篇文章有多少人在濫用 service+serviceImpl,又有多少人在誤用myBatis 我在很多地方都看到了一個(gè)ServiceImpl接口,一個(gè)service類的寫法,一直不理解為什么要多次一舉,但還是照著做了,上面那篇文章里說到這是一種過時(shí)的寫法,使用接口文件是為了解決可能連接各種數(shù)據(jù)庫(kù)而有多個(gè)數(shù)據(jù)訪問層的問題,這樣只需要實(shí)現(xiàn)對(duì)應(yīng)的結(jié)構(gòu)就行了,而有了Mybatis之后這種問題就不存在了,所以不需要再寫impl接口文件,使用 service+dao+mapper.xml 是一種更好的選擇
  • Controller,這里只討論MVC了,普通java web的寫法還不會(huì),然后從controller應(yīng)該就直接到資源文件里的HTML頁(yè)面了
  • 上面是按順序自下而上的,除此之外一些公共層:工具類庫(kù)(utils)、配置類(config)、數(shù)據(jù)傳輸對(duì)象(dto)、視圖包裝對(duì)象(vo)
  • 還可以看看這篇spring boot 項(xiàng)目開發(fā)常用目錄結(jié)構(gòu)

    總結(jié)

    以上是生活随笔為你收集整理的java接口构建英雄属性_Java开发学习心得(三):项目结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。