zoukankan      html  css  js  c++  java
  • spring boot初步

    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事务学习-传播Requried
    云笔记项目-Spring事务学习_测试准备
    云笔记项目-AOP知识简单学习
    云笔记项目-过滤器与拦截器学习
    云笔记项目-Java反射知识学习
    云笔记项目-补充JS面向对象编程基础知识
    云笔记项目-移动笔记后高亮显示笔记本和笔记
    算法-第四版-练习1.3.16解答
    Redis相关的内核参数解释与设置
    算法-第四版-练习1.3.17解答
  • 原文地址:https://www.cnblogs.com/LTmei/p/9181925.html
Copyright © 2011-2022 走看看