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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重识maven

發布時間:2024/1/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重识maven 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?在之前直接使用了maven,了解了maven的最基本的使用,但是一直沒有對maven做一個全面的了解,只知道maven是用來導jar包的,今天對maven做一個重新認識,方便后面理解springboot:

1.maven的父子工程:創建一個maven父工程

創建成功后刪除src文件夾,因為父工程只負責管理jar包

1.1.父工程并沒有實質性的內容,所有的jar包都在里面,也就是說只需要管理jar包即可,不參與任何邏輯開法

然后再父工程的pom文件中導入依賴:

<dependencies><!--mysql包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency><!--spring包--><!--mybatis包--><!--shiro包--></dependencies>

在以往的項目中我們都是這么導入依賴的,現在導入依賴后,在父工程下創建子模塊

創建好子工程后,在回過頭查看父工程的pom文件:

可以看到,剛創建的子模塊都在父工程的pom文件中顯示出來了,在子工程的pom文件中也有這樣一段代碼

標識該模塊的父工程,那么父工程是用來管理依賴的,因此父工程內有的依賴,子工程就會繼承該依賴,因此就會在每一個子工程中都導入一遍父工程的依賴,

2.在父工程中擁有很多子模塊,每一個子模塊都代表了不用的包(package:entity,mapper,service,impl,controller)

  而且父工程中的所有jar包,都會被子工程所繼承

問題1:

如果依賴非常多的話,就會影響項目的性能,因為每個模塊負責的功能都不相同,如果web模塊需要shiro的jar包,而其他的模塊都不需要該jar包,但是因為父子工程的規則,強制子模塊將jar包都導入進來,每一個子模塊都都導入進來,就會影響項目于的性能運行速度等。怎么解決?

<!--dependencyManagement標簽,被該標簽控制的jar包不會被子工程所繼承,如果子工程有需要,可以重寫父工程中的jar包并且不需要寫版本號(如果寫了版本號,就表示是從maven重新下載,而不是繼承父類工程的)--><dependencyManagement></dependencyManagement>

具體實例如下:

<dependencyManagement><dependencies><!--mysql包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency><!--spring包--><!--mybatis包--><!--shiro包--></dependencies></dependencyManagement>

現在在父工程中,將jar包放入了dependencyManagement標簽中,那么子模塊就不能從父類中繼承了,如果子工程需要用

不用寫版本號,繼承自父類。

使用maven的好處:

? 方便了整個項目的管理,解決了jar包冗余的問題,方便分布式開發

問題2:

如果開始分模塊開發,那么之前我們項目中寫的entity、controler、mapper、service等包都會被分成一個一個的模塊,這時候,controller要調用service,service要調用mapper,可是不在一個模塊中,如圖:

?仙子啊mapper中的UserMapper類內存在方法需要調用User實體:

User實體是在另一個model中的,調不到怎么解決?

使用工程依賴
在mapper項目中的pom.xml文件中以jar包的形式引入model項目即可
一旦使用量的工程依賴,就會出現層級依賴

在mapper模塊的pom文件中引入model:

<dependency><!--groupId與父工程的一樣--><groupId>com.zs</groupId><!--需要引入的模塊--><artifactId>model</artifactId><!--需要引入的版本號--><version>1.0-SNAPSHOT</version></dependency>

然后就可以在mapper中引入User對象了:

問題3:

使用了層級依賴,上級所引用的jar包,下級是否可以引用?

?可以引用,在mapper中引用了model,在service中可以直接引用不需要重新導入依賴:

在service模塊中引入mapper依賴:

這里并沒有引入model的依賴;然后寫接口:

注意,在這里仍然可以使用model的依賴,因為service引入了mapper,而mapper引入了model,因此service也可以使用model中的類。

定義實體類的標準:
1.需要實現序列化接口
2.需要重寫hashCode和equalse
3.需要重寫toString()
4.必須有getter和setter方法
5.要求所有的類型全部為包裝類型,不能使用基本類型(因為使用包裝類型可以防止空指針異常)

?

轉載于:https://www.cnblogs.com/Zs-book1/p/11360304.html

總結

以上是生活随笔為你收集整理的重识maven的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。