maven父子項目工程搭建及添加springboot、mybaties等依賴詳解


1、參考https://www.cnblogs.com/yrjns/p/11254870.html 搭建好父子模塊。

2、在父pom中添加對springboot的依賴,

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>

這時並不能把springboot的依賴包添加進來,必須在<dependencies> 添加需要依賴的springboot依賴包才能在Maven Dependencies 看到依賴的jar。

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

可以根據需要添加spring-boot-starter-parent依賴的其他jar包。

通過繼承spring-boot-starter-parent,默認具備了如下功能:
.Java版本(Java8)
.源碼的文件編碼方式(UTF-8)
.依賴管理
.打包支持
.動態識別資源
.識別插件配置
.識別不同的配置,如:application-dev.properties 和 application-dev.yml

3、完成上面這些就可以建立啟動類,啟動了。

@SpringBootApplication
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

這時父子工程的pom文件 可以執行 maven clean 和maven install maven update等。

4、添加對mybaties 的支持,

在<dependencies> 添加

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>

<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<version>1.3.1</version>

</dependency>

MyBatis-Spring-Boot-Starter依賴將會提供如下功能:

自動檢測現有的DataSource
將創建並注冊SqlSessionFactory的實例,該實例使用SqlSessionFactoryBean將該DataSource作為輸入進行傳遞
將創建並注冊從SqlSessionFactory中獲取的SqlSessionTemplate的實例。
自動掃描您的mappers,將它們鏈接到SqlSessionTemplate並將其注冊到Spring上下文,以便將它們注入到您的bean中。

使用了該Starter之后,只需要定義一個DataSource即可(application.properties或application.yml中可配置),它會自動創建使用該DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。會自動掃描你的Mappers,連接到SqlSessionTemplate,並注冊到Spring上下文中。


mybatis的配置項:mybatis.mapperLocations=


結論是:如果Mapper.xml與Mapper.class在同一個包下且同名,spring掃描Mapper.class的同時會自動掃描同名的Mapper.xml並裝配到Mapper.class。

如果Mapper.xml與Mapper.class不在同一個包下或者不同名,就必須使用配置mapperLocations指定mapper.xml的位置。

此時spring是通過識別mapper.xml中的 <mapper namespace="com.fan.mapper.UserDao"> namespace的值來確定對應的Mapper.class的。


5、添加數據庫連接池和數據庫驅動


<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>


<!-- jdbc6 驅動的依賴(需指定版本) -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
   <version>6.0.6</version>
    </dependency> 


Druid是什么?
Druid是Java語言中最好的數據庫連接池。Druid能夠提供強大的監控和擴展功能。

Druid 具體配置操作
阿里 Druid為SpringBoot 提供專門的start依賴,Mybatis 使用 Druid 相對比較簡單,我們只需要引入 Druid 的starter 依賴並添加相關的一些配置即可。
詳情可參考:
https://blog.csdn.net/ljk126wy/article/details/87895658

然后在application.properties中進行JDBA配置:

spring.datasource.type: com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/learn?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#初始化時建立物理連接的個數
spring.datasource.druid.initial-size=3
#最小連接池數量
spring.datasource.druid.min-idle=3
#最大連接池數量
spring.datasource.druid.max-active=10
#獲取連接時最大等待時間
spring.datasource.druid.max-wait=60000
#配置監控頁面訪問登錄名稱
spring.datasource.druid.stat-view-servlet.login-username=admin
#配置監控頁面訪問密碼
spring.datasource.druid.stat-view-servlet.login-password=admin
#是否開啟慢sql查詢監控
spring.datasource.druid.filter.stat.log-slow-sql=true
#慢SQL執行時間
spring.datasource.druid.filter.stat.slow-sql-millis=1s


6、添加打包依賴的插件和插件配置

在父pom中添加插件聲明<pluginManagement>,它和<dependencyManagement>的作用一樣,只是對插件或依賴包做聲明和指定版本號,並不真正的引入,真正的引入需要在子pom中配置<plugins> 和</dependencies>,只是省去了版本號的指定。這是為了防止版本一致和防止不同子工程引入版本不一致導致沖突。
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven
defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<!-- <plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin> -->
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- 編譯打包 -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!--這部分可有可無,加上的話則直接生成可運行jar包 -->
<archive>
<manifest>
<mainClass>${exec.mainClass}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>

</plugins>
</pluginManagement>
</build>

在子pom中添加插件依賴和打包配置

<build>

<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.nana.SpringbootApplication</mainClass>
</manifest>

<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入資源文件目錄 -->
<Class-Path>./config/</Class-Path>
</manifestEntries>

</archive>

<excludes>
<exclude>config/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

<!-- 該插件的作用是用於復制指定的文件 -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution> <!-- 復制配置文件 -->
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources/config</directory>
<includes>
<!-- <include>*.properties</include> -->
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/config</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>


</plugins>

</build>


7、配置子工程A對B的依賴

只需要在A工程的pom文件里把對B的 依賴加上,就已工程依賴的方式依賴了B工程,可以在A的Maven Dependencies 看到B工程,注意不要以靜態jar包的方式引人,maven默認是工程方式引入,這樣修改了B工程不用打包,A工程立即即可感知到。
<dependency>
<groupId>com.wangna.mvntest</groupId>
<artifactId>my-jdbc</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>


8、啟動類配置

@SpringBootApplication
//@MapperScan(basePackages = {" com.my.main.project.jdbc"," com.my.main.project.entity"})//將項目中對應的mapper類的路徑加進來就可以了
@ComponentScan(basePackages = {"com.my.main.project"})
@MapperScan("com.my.main.project.jdbc.mapper")
public class App
{
public static void main( String[] args )
{
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);

System.out.println( "Hello World!" );
}
}

 

 

執行 SpringApplication.run(App.class,args);的時候其實執行的是App類上的三個注解,和main函數里的其代碼沒有任何關系,是掃描主類目錄和配置的目錄下的含有spring注解 @Compent等的類。並注冊到spring上下文環境中,並掃描starter 自動配置類,拉起spring上下文環境。

所以如果在同一目錄下寫了兩個啟動類,只要上面的注解一樣,啟動那一個都是一樣的,唯一不同的是main函數里的執行代碼不一樣。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM