1. 程式人生 > >spring boot初步

spring boot初步

mat start 文件命名 onf spec mybatis lee charset iba

spring boot介紹 Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。   
  • 該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置
使用場景
  • web 後端項目都可以用spring boot來開發
spring boot的定位是入門級的微服務開發框架 特點: 編碼簡單 配置簡單 學習成本低 部署簡單 內置容器 1、新建項目的工具 工具:IDEA 創建方式:IDEA,Spring Tool Suite,https://start.spring.io/
前面兩個工具可以直接構建,後面一個是spring 的官方網址,這個是構建一個基本的spring boot項目,然後需要下載下來解壓 在eclipse中需要安裝一個插件:sts 2、使用idea創建項目 創建演示 運行一個簡單的程序 沒有任何配置文件的指定的時候,項目的默認端口是8080,沒有第二級的項目目錄 3、項目的配置文件 spring boot支持多環境的配置,配置文件命名是application-環境名.yml 然後在主的配置文件中指定用哪個環境的配置文件 加載資源 4、集成mybatis 添加依賴 在配置文件中配置數據庫連接信息 配置連接池 配置mybatis
啟動類加掃描mapper文件的註解 5、定時任務 在啟動類上添加開啟定時任務的註解 在需要執行的任務上面直接使用時間表達式就可以

// 開啟定時任務
@EnableScheduling

6、異步調用 在啟動類上添加開啟異步執行的註解

// 開啟異步調用方法
@EnableAsync

7、整合Redis 添加依賴 完善配置文件 執行代碼 8、自定義日誌文件 logback-spring.xml自定義的日誌文件 9、打包方式 maven的打包命令 打成jar包直接可以運行 打成war包 1 修改pom文件的jar為war 2 添加依賴 3 修改主啟動文件 繼承SpringBootServletInitializer類並重寫方法
  • @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringDemoApplication.class); }
打成war包之後 訪問的端口是Tomcat的端口,項目名也是war包的名稱 自定義日誌文件:logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">


    <!-- appName -->
    <property name="appName" value="mei-app-web-demo"/>

    <!-- %m輸出的信息,%p日誌級別,%t線程名,%d日期,%c類的全名,,,, -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
            <!--格式化輸出:%d:表示日期    %thread:表示線程名     %-5level:級別從左顯示5個字符寬度  %msg:日誌消息    %n:是換行符-->
            <pattern>%black([${appName}]) %red(%-12(%d{yyyy-MM-dd HH:mm:ss.SSS})) %green(|-%-5level) %highlight([%thread] %c [%L]) -| %msg%n
            </pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <contextName>${appName}</contextName>
    <!-- 日誌存儲的絕對路徑 -->
    <property name="logPath" value="f:/logs"/>
    <!--設置系統日誌目錄-->
    <property name="appDir" value="${appName}"/>

    <!--
          說明:
          1、日誌級別及文件
              日誌記錄采用分級記錄,級別與日誌文件名相對應,不同級別的日誌信息記錄到不同的日誌文件中
              例如:error級別記錄到log_error_xxx.log或log_error.log(該文件為當前記錄的日誌文件),而log_error_xxx.log為歸檔日誌,
              日誌文件按日期記錄,同一天內,若日誌文件大小等於或大於2M,則按0、1、2...順序分別命名
              例如log-level-2013-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將日誌信息輸出到控制上,為方便開發測試使用
       -->

    <!-- 日誌記錄器,日期滾動記錄 error -->
    <appender name="fileError" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文件的路徑及文件名 -->
        <file>${logPath}/${appDir}/log_error.log</file>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日誌文件的路徑,例如今天是2013-12-21日誌,當前寫的日誌文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
            而2013-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${logPath}/${appDir}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
            命名日誌文件,例如log-error-2013-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>[${appName}]===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%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>


    <!-- 日誌記錄器,日期滾動記錄  warn -->
    <appender name="fileWarn" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文件的路徑及文件名 -->
        <file>${logPath}/${appDir}/log_warn.log</file>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日誌文件的路徑,例如今天是2013-12-21日誌,當前寫的日誌文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
            而2013-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${logPath}/${appDir}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
            命名日誌文件,例如log-error-2013-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>[${appName}]===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %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>

    <!-- 日誌記錄器,日期滾動記錄 info -->
    <appender name="fileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文件的路徑及文件名 -->
        <file>${logPath}/${appDir}/log_info.log</file>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日誌文件的路徑,例如今天是2013-12-21日誌,當前寫的日誌文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
            而2013-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${logPath}/${appDir}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
            命名日誌文件,例如log-error-2013-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>[${appName}]===%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>

    <!-- 日誌記錄器,日期滾動記錄 debug -->
    <appender name="fileDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日誌文件的路徑及文件名 -->
        <file>${logPath}/${appDir}/log_debug.log</file>
        <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日誌文件的路徑,例如今天是2013-12-21日誌,當前寫的日誌文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
            而2013-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${logPath}/${appDir}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
            命名日誌文件,例如log-error-2013-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>[${appName}]===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日誌文件只記錄debug級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!--<logger name="com.minlia" level="DEBUG"/>-->
    <!--<logger name="org.springframework.data.mybatis" level="DEBUG"/>
    <logger name="org.springframework.aop.aspectj" level="ERROR"/>

    <logger name="javax.activation" level="WARN"/>
    <logger name="javax.mail" level="WARN"/>
    <logger name="javax.xml.bind" level="WARN"/>
    <logger name="ch.qos.logback" level="INFO"/>

    <logger name="com.sun" level="WARN"/>
    <logger name="com.zaxxer" level="WARN"/>
    <logger name="io.undertow" level="WARN"/>
    <logger name="net.sf.ehcache" level="WARN"/>
    <logger name="org.apache" level="WARN"/>

    <logger name="org.hibernate.validator" level="WARN"/>
    <logger name="org.hibernate" level="WARN"/>
    <logger name="org.hibernate.ejb.HibernatePersistence" level="OFF"/>
    <logger name="org.springframework.web" level="INFO"/>
    <logger name="org.springframework.security" level="WARN"/>
    <logger name="org.springframework.cache" level="WARN"/>
    <logger name="org.thymeleaf" level="WARN"/>

    <logger name="sun.rmi" level="WARN"/>
    <logger name="liquibase" level="WARN"/>
    <logger name="sun.rmi.transport" level="WARN"/>

    <logger name="jdbc.connection" level="ERROR"/>
    <logger name="jdbc.resultset" level="ERROR"/>
    <logger name="jdbc.resultsettable" level="INFO"/>
    <logger name="jdbc.audit" level="ERROR"/>
    <logger name="jdbc.sqltiming" level="ERROR"/>
    <logger name="jdbc.sqlonly" level="INFO"/>-->


    <!-- 不同環境的日誌配置 -->
    <springProfile name="dev">
        <root level="DEBUG">
            <!--<appender-ref ref="FILEERROR"/>-->
            <!--<appender-ref ref="FILEWARN"/>-->
            <!--<appender-ref ref="fileInfo"/>-->
            <!--<appender-ref ref="fileDebug"/>-->
            <appender-ref ref="CONSOLE"/>

        </root>
    </springProfile>

    <springProfile name="test">
        <root level="DEBUG">
            <!--<appender-ref ref="FILEERROR"/>-->
            <!--<appender-ref ref="FILEWARN"/>-->
            <appender-ref ref="fileInfo"/>
            <appender-ref ref="fileDebug"/>
            <appender-ref ref="CONSOLE"/>

        </root>
    </springProfile>

    <springProfile name="prod">
        <root level="DEBUG">
            <!--<appender-ref ref="FILEERROR"/>-->
            <!--<appender-ref ref="FILEWARN"/>-->
            <!-- <appender-ref ref="fileInfo"/>-->
            <!--<appender-ref ref="fileDebug"/>-->
            <appender-ref ref="CONSOLE"/>

        </root>
    </springProfile>


</configuration>

spring boot初步