SpringBoot創建maven多模塊項目(簡單標準!!)

使用工具:idea

 

詳細步驟:

file->new -> project

 

 

然後一路next即可,最後finish

 最後我們看到創建後的項目只有項目名稱和pom.xml就對了:

 

 

 二:接下來創建我們的多模塊mave子項目:

 

 

 

 

 

next -> finish

 

 

接下來可以看到我們的兩個子模塊就創建好了,並且這兩個子模塊的parent都是spring-security-auth

 

 

但是的話還差一點點,我們是通過springboot創建多模塊的,是不是感覺還少了點啥??哈哈。。

對的,我們還需要一個子模塊作爲我們springboot項目的啓動模塊,對於springboot項目的一些配置和啓動類是需要的

像上面添加子模塊的步驟一樣來到這個界面:

 

 選擇我們需要的一些依賴:

 

最後看到我們的項目結構:

 

 最後還需要配置模塊之間的依賴關係:

在我們的父pom中添加模塊

 

 父pom常用配置以及依賴

 

複製代碼

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.dengwei</groupId>
    <artifactId>spring-security-auth</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-security-auth</name>
    <description>Demo project for Spring Boot</description>

    <modules>
        <module>springsecuritybasic</module>
        <module>securityjwtrestful</module>
    </modules>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--操作數據庫-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- Druid 數據庫連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.5</version>
        </dependency>
           <!--mysql連接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- MyBatis 分頁插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--配置文件xml或properties處理器-->
        <dependency>
            <groupId> org.springframework.boot </groupId>
            <artifactId> spring-boot-configuration-processor </artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

複製代碼

 

 

 

 

接下來我們看一下關於啓動類的依賴以及配置:

因爲剛纔我們創建starter模塊並沒有把spring-security-auth作爲我們的父類,所以需要改一下,即把parent更改成

 

作爲一個啓動子模塊那麼肯定需要依賴於所有的其他子模塊,即上面截圖的依賴信息。

starter模塊的pom依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>spring-security-auth</artifactId>
        <groupId>com.dengwei</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.dengwei</groupId>
    <artifactId>starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>starter</name>
    <description>Demo project for Spring Boot</description>


    <dependencies>
        <dependency>
            <groupId>com.dengwei</groupId>
            <artifactId>security-jwt-restful</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.dengwei</groupId>
            <artifactId>spring-security-basic</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

最後在我們的啓動類加上掃描包的註解即可:

 

 

 

接下來我們看一下關於yml的配置(此配置是基於springboot1.5)

 

詳細配置:

複製代碼

server:
  port: 9000
  context-path: '/crm'
  connection-timeout: 600000

#mybatis掃描的文件夾
mybatis:
  mapper-locations: classpath*:mapper/*Mapper.xml
  configuration:
    database-id: MySQL
spring:
  activiti:
    database-schema-update: true
  http:
    multipart:
      max-file-size: 100MB
      max-request-size: 1000MB

---
spring:
  profiles: dev
  datasource:
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://192.168.2.241:3306/crm-dev?useSSL=false&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
      username: root
      password: **
      filters: stat
       # 配置初始化大小、最小、最大
      maxActive: 20
      initialSize: 1
       #配置獲取連接等待超時的時間
      maxWait: 60000
      minIdle: 1
       #配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 6000
        #配置一個連接在池中最小生存的時間,單位是毫秒
      minEvictableIdleTimeMillis: 30000
       #測試連接
      validationQuery: select 'x'
       #申請連接的時候檢測,建議配置爲true,不影響性能,並且保證安全性
      testWhileIdle:  true
       #獲取連接時執行檢測,建議關閉,影響性能
      testOnBorrow: false
       #歸還連接時執行檢測,建議關閉,影響性能
      testOnReturn: false
       #是否開啓PSCache,PSCache對支持遊標的數據庫性能提升巨大,oracle建議開啓,mysql下建議關閉
      poolPreparedStatements: true
       #開啓poolPreparedStatements後生效
      maxOpenPreparedStatements: 20
      #配置擴展插件,常用的插件有=>stat:監控統計  log4j:日誌  wall:防禦sql注入
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 2000
---
spring:
  profiles: test
  datasource:
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://192.168.2.241:3306/crm-test?useSSL=false&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
      username: root
      password: **
      filters: stat
      maxActive: 20
      initialSize: 1
      maxWait: 60000
      minIdle: 1
      timeBetweenEvictionRunsMillis: 6000
      minEvictableIdleTimeMillis: 30000
      validationQuery: select 'x'
      testWhileIdle:  true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxOpenPreparedStatements: 20

複製代碼

上面用到了Druid 數據庫連接池,你們可以根據自己的需要換成其他的。

最後關於日誌的配置:

 

logback-spring.xml 

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <property name="LOG_FILE_NAME_PATTERN" value="logs/auth.%d{yyyy-MM-dd}.%i.log"/>
    <!-- 日誌格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%c){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
    <property name="FILE_LOG_PATTERN"
              value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %c : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

    <!--輸出到控制檯-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--輸出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE_NAME_PATTERN}</fileNamePattern>
            <!-- 日誌保留天數 -->
            <maxHistory>366</maxHistory>
            <!-- 日誌文件上限大小,達到指定大小後刪除舊的日誌文件 -->
            <totalSizeCap>2GB</totalSizeCap>

            <!-- 每個日誌文件的最大值 -->
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>

        </rollingPolicy>
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- region 根據不同的環境設置不同的日誌輸出級別 -->
    <springProfile name="default,local">
        <root level="info">
            <appender-ref ref="console"/>
        </root>
        <logger name="com.zhl" level="debug"/>
    </springProfile>

    <springProfile name="dev,test">
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        </root>
        <logger name="com.zhl" level="debug"/>
    </springProfile>

    <springProfile name="product,pre">
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        </root>
        <logger name="com.zhl" level="debug"/>
    </springProfile>
    <!-- endregion -->

</configuration>

 

 

結束!是不是很簡單,如果你是第一次搭建,一定要細心,慢慢來。

上述參考:https://www.cnblogs.com/dw3306/p/11058514.html

總起來說:

1.先創建一個父項目

2.再根據需要創建不同的啓動子項目(springboot項目)(注意:我這裏的springboot是創建的jar,你們也可以根據自己的需要創建成war項目)

3.最後根據需要創建不同的普通maven jar項目

4.項目之間的依賴關係一定要理清楚

這裏我只是講解如何springboot 父子級項目,後面我會講到如何在springboot框架的基礎上集成dubbo服務,敬請期待!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章