spring boot初步
Posted LTmei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 boot初步的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot:thymeleaf 没有正确渲染片段
spring boot 学习一 springboot项目初步搭建
解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段