SpringBoot + Gradle + mysql 搭建web 項目

搭建環境所需配置文件
application.yml:

# 服務器配置
server:
  port: 8080
  session:
    timeout: 30
  tomcat:
    uri-encoding: UTF-8
    max-threads: 0
  context-path: /lemon

# spring 數據源配置
spring:
  datasource:
    # 主數據源
    url: jdbc:mysql://localhost:3306/lemon_2?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
     # 配置bdcp 連接池屬性
    dbcp2:
        initial-size: 5
        min-idle: 5
        max-wait-millis: 60000
        max-total: 30
        time-between-eviction-runs-millis: 300000
        validation-query: SELECT 1 FROM DUAL
        test-while-idle: true
        test-on-borrow: false
        test-on-return: false
        pool-prepared-statements: true
        max-open-prepared-statements: 20

  # jpa 配置
  jpa:
    database: mysql
    show-sql: true
    generate-ddl: true
    hibernate:
      ddl-auto: update


  # springMVC 配置
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp

# 日誌配置文件地址
logging:
  config: classpath:static/logback-spring.xml


日誌配置文件:(因爲依賴包問題。使用SpringBoot自帶的logback)

<configuration scan="true">
    <!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑-->
    <property name="LOG_NAME" value="/home"></property>
    <!-- %m輸出的信息,%p日誌級別,%t線程名,%d日期,%c類的全名,,,, -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
            <!--格式化輸出:%d:表示日期    %thread:表示線程名     %-5level:級別從左顯示5個字符寬度  %msg:日誌消息    %n:是換行符-->
            <pattern>1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
            <!--<charset>uft-8</charset>-->
        </encoder>
    </appender>
    <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
    <contextName>RestAPI</contextName>
    <property name="LOG_PATH" value=".log"/>
    <!--設置系統日誌目錄-->
    <property name="APPDIR" value="lemon2.0"/>
    <!--
          說明:
          1、日誌級別及文件
              日誌記錄採用分級記錄,級別與日誌文件名相對應,不同級別的日誌信息記錄到不同的日誌文件中
              例如:error級別記錄到log_error_xxx.log或log_error.log(該文件爲當前記錄的日誌文件),而log_error_xxx.log爲歸檔日誌,
              日誌文件按日期記錄,同一天內,若日誌文件大小等於或大於2M,則按0、1、2...順序分別命名
              例如log-level-2017-12-21.0.log
              其它級別的日誌也是如此。
          2、文件路徑
              若開發、測試用,在Eclipse中運行項目,則到Eclipse的安裝路徑查找logs文件夾,以相對路徑../logs。
              若部署到Tomcat下,則在Tomcat下的logs文件中
          3、Appender
              FILEERROR對應error級別,文件名以log-error-xxx.log形式命名
              FILEWARN對應warn級別,文件名以log-warn-xxx.log形式命名
              FILEINFO對應info級別,文件名以log-info-xxx.log形式命名
              FILEDEBUG對應debug級別,文件名以log-debug-xxx.log形式命名
              CONSOLE將日誌信息輸出到控制上,爲方便開發測試使用
       -->


    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

    <!-- 日誌記錄器,日期滾動記錄 -->
    <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/log_error.log</file>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日誌文件的路徑,例如今天是2017-12-21日誌,當前寫的日誌文件路徑爲file節點指定,可以將此文件與file指定文件路徑設置爲不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
            而2017-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
            命名日誌文件,例如log-error-2017-12-21.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>2MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日誌 -->
        <append>true</append>
        <!-- 日誌文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS}=== %-5level %logger-%M Line:%-4L -  %msg
                %ex{short}%n
            </pattern>
            <!--<charset>utf-8</charset>-->
        </encoder>
        <!-- 此日誌文件只記錄error級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 日誌記錄器,日期滾動記錄 -->
    <appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日誌文件的路徑,例如今天是2017-12-21日誌,當前寫的日誌文件路徑爲file節點指定,可以將此文件與file指定文件路徑設置爲不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
            而2017-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
            命名日誌文件,例如log-error-2017-12-21.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日誌 -->
        <append>true</append>
        <!-- 日誌文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-4L - %msg%n</pattern>
            <!--<charset>utf-8</charset>-->
        </encoder>
        <!-- 此日誌文件只記錄WARN級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 日誌記錄器,日期滾動記錄 -->
    <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/log_info.log</file>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日誌文件的路徑,例如今天是2017-12-21日誌,當前寫的日誌文件路徑爲file節點指定,可以將此文件與file指定文件路徑設置爲不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
            而2017-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
            命名日誌文件,例如log-error-2017-12-21.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日誌 -->
        <append>true</append>
        <!-- 日誌文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <!--  <charset>utf-8</charset>-->
        </encoder>
        <!-- 此日誌文件只記錄info級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--日誌異步到數據庫  -->
    <!--<appender name="DBAPPENDER" class="ch.qos.logback.classic.db.DBAppender">-->
    <!--<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">-->
    <!--<dataSource class="com.zaxxer.hikari.HikariDataSource">-->
    <!--<driverClassName>com.mysql.jdbc.Driver</driverClassName>-->
    <!--<jdbcUrl>jdbc:mysql://localhost:3306/albedo-new?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</jdbcUrl>-->
    <!--<username>root</username>-->
    <!--<password>123456</password>-->
    <!--<poolName>HikariPool-logback</poolName>-->
    <!--</dataSource>-->
    <!--</connectionSource>-->
    <!--&lt;!&ndash; 此日誌文件只記錄info級別的 &ndash;&gt;-->
    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
    <!--<level>warn</level>-->
    <!--<onMatch>ACCEPT</onMatch>-->
    <!--<onMismatch>DENY</onMismatch>-->
    <!--</filter>-->
    <!--&lt;!&ndash; 此日誌文件只記錄info級別的 &ndash;&gt;-->
    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
    <!--<level>error</level>-->
    <!--<onMatch>ACCEPT</onMatch>-->
    <!--<onMismatch>DENY</onMismatch>-->
    <!--</filter>-->
    <!--</appender>-->

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){red} %clr(%contextName){green} %clr([%thread]) %clr(%-5level)
                %clr(%logger{36}){magenta}  - %clr(%msg%n)
            </pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="FILEERROR"/>
        <appender-ref ref="FILEWARN"/>
        <appender-ref ref="FILEINFO"/>
        <!--<appender-ref ref="DBAPPENDER"/>-->
        <appender-ref ref="CONSOLE"/>
    </root>

</configuration>

gradle基礎依賴包:

apply plugin: 'war'
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'

buildscript {
    ext {
        springBootVersion = '1.5.9.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
group = 'com.lemengxiangju.lemon'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

configurations {
    providedRuntime
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa') {
        exclude module: 'org.springframework.boot:spring-boot-starter-logging'
    }
    compile('org.springframework.boot:spring-boot-starter-jdbc') {
        exclude module: 'org.springframework.boot:spring-boot-starter-logging'
    }

    compile('org.springframework.boot:spring-boot-starter-web') {
        exclude module: 'org.springframework.boot:spring-boot-starter-logging'
        exclude module: 'org.apache.tomcat:spring-boot-starter-tomcat'
    }
    compile('mysql:mysql-connector-java')
    compile('org.springframework.boot:spring-boot-starter-tomcat')

    // jsp 頁面配置
    // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
//    compile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.0'

    // https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api
//    compile group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.2-b02'

    // https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl
//    compile group: 'javax.servlet.jsp.jstl', name: 'jstl', version: '1.2'

    // 配置tomcat jsp 識別。 jsp解析引擎
    compile group: 'org.apache.tomcat', name: 'tomcat-jasper', version: '9.0.2'

    // https://mvnrepository.com/artifact/junit/junit
//  testCompile group: 'junit', name: 'junit', version: '4.12'


//    testCompile('org.springframework.boot:spring-boot-starter-test')
//    testCompile('org.springframework.restdocs:spring-restdocs-mockmvc')
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章