第3集 SpringBoot番外篇 (SpringBoot)

说明:本次项目采用"土味情话"的方式演示springboot中一些常用知识。

演示环境Intellij idea,内容:
1.Springboot中Mybatis整合Logback日志
2.热部署、打包、运行项目等

===>>>> 1.SpringBoot + Mybatis + logback日志的整合

方式一:
(1)日志的使用,当前流行于Adapter设计模式的日志应用,
作用是:方便替换日志工具(比如项目今天用log4j,明天就换成jul,这个更改只需要修改少量配置即可完成)
(2)日志体系图:

在这里插入图片描述

(3)整合mybatis和logback日志
			Spring与Mybatis整合的插件(jar包)由Mybatis官方提供,而不是Spring来提供。
			Mybatis支持的日志类型并不包含后起之秀logback,但它支持以下几种日志
				(1.1)SLF4J
				(2.1)Apache Commons Logging
				(3.1)Log4j 2
				(4.1)Log4j
				(5.1)JDK logging
		那么整合logback呢?笔者的思路是借助SLF4J-->Logback(因为SLF4J能够适配logback的),基于这个思路笔者
		在springboot中开始整合,步骤如下:
			(i)在mybatis配置文件中(笔者的为mybatis.xml,可以自己取名,加载配置文件时指定的配置文件名就是这个名)
				<configuration>
				  <settings>
					...
					<setting name="logImpl" value="SLF4J"/>
					...
				  </settings>
				</configuration>
		
			(ii)在不少应用服务器(如 Tomcat 和 WebShpere)中mybatis会优先找 Commons Logging日志工具作为默认日志工具,
				由于这个原因,笔者把与slf和logback无关的日志包给排除掉,直接上图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
(iii)编写日志文件logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<!-- 1.直接定义日志保存的路径	-->
<property name="LOG_HOME" value="e:/test_logs"/>

<!--定义一个appender输出到控制台->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
	<!--按pattern指定的格式输出日志,编码为UTF-8-->
	<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
		<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread]  %logger{30} - %msg%n</pattern>
		<charset>UTF-8</charset>
	</encoder>
</appender>
<!--每天生成一份日志,相当于Nginx中的日志切割-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
	<!--指定的格式输出日志和编码-->
	<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
		<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread]  %logger{30} - %msg%n</pattern>
		<charset>UTF-8</charset>
	</encoder>
	<!-- 定义保存的文件名 -->
	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
		<!--%d{yyyy-MM-dd}代表每天生成一个新的日志-->
		<fileNamePattern>${LOG_HOME}/mysprintboot4_%d{yyyy-MM-dd}.log</fileNamePattern>
		<!--每天一份总共90份,就是90天即每一份日志从生成起可以保存3个月-->
		<maxHistory>90</maxHistory>
	</rollingPolicy>
	<!-- 过滤出错误级别信息保存到上面指定的日志文件中,注意编译阶段的错误并不记录到日志文件中而是记录服务器运行时错误。
	由于在工发环境,先定义成DEBUG用于调试,生产环境改成ERROR,当然可以定义多个appender,有INFO,DEBUG,ERROR级别的-->
	<filter class="ch.qos.logback.classic.filter.LevelFilter">
		<level>DEBUG</level>
		<onMatch>ACCEPT</onMatch>
		<onMismatch>DENY</onMismatch>
	</filter>
</appender>

<!-- springboot中logback输出mybatis发出的sql日志
<logger name="org.it.springboot4.mapper" level="DEBUG"/>
 -->
<!-- 定义日志的root,使用两个appender进行日志管理一个叫console用于输出日志到控制台,一个叫file用于写日志到文件中 -->
<root level="INFO">
	<appender-ref ref="console" />
	<appender-ref ref="file" />
</root>
OK,这样就完成了。经过笔者实践检验完成可以使用。。。 紧接着来看看方式二, 非常简单(推荐)

方式二:
在resource资源包下建立的application.properties(如果你使用了.yml文件也可以写在这种文件中)中加入以下配置即可:
(在这里笔者遇到了一个坑:日志级别设置高了,设置成INFO,导致日志输出不成功!当时脑子中觉得是slf没有采用logback可能采用其它日志工具了,
才采用了方式一来整合logback,当整合成功后发现日志级别也是设置成debug,才恍然大悟,自己把日志级别调高了所以没有日志信息输出。)
#设置mybatis中sql输出到控制台,一定要看清这里设置的日志级别为debug
logging.level.org.it.springboot4.mapper=debug
接着,如果想把日志输出到指定的日志文件中,并对日志进行切割,加入logback.xml配置文件(方式一中已提供)即可。

===>>>> 2.SpringBoot热部署

	什么是热部署?
		当应用程序运行中,修改"一些"文件的内容时可以自动更新,无需要重新启动服务器,
		提高了开发效率。有些应用程序启动一次10分钟左右(以前参与某个电力系统),如果你每次修改一点东西都要重启应用,那……。

这个热部署,再配置thymeleaf时坑了笔者一把(由于是现学现用Intellij idea工具,导致里面少配置了一项,页面缓存没有被清除,导致热部署出了小问题)
不过没关系,这个坑已被本人踏平,大家按照以下配置即可完成热部署。(注意,这里使用是IDE:Intellij idea)

(1)在工程的pom.xml文件中加入以下配置:
			<!-- 热部署所依赖的工具包 -->
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-devtools</artifactId>
				<scope>runtime</scope>
			</dependency>
		
(2)在application.properties(或者.yml文件中)添加以下配置:
 spring.thymeleaf.cache=false  #注意这里使用的是thymeleaf模板,你用其它模板是无效的。
		
(3)动态编译配置:
		a.菜单File-->settings-->Build,Executor,Deployment-->Compiler-->勾选右侧的选项:
			"Build Project Automatically"
		b.快捷键组合:Ctrl + Shift + a--->弹出一个框,输入:Registry-->找到:
			"comiler.automake.allow.when.app.running" 勾选。
		
	OK配置完成,Alt + Shift + F9 (debug模式启动入口类),就进入了热部署状态 。

3.SpringBoot打包+发布+运行

(1)前言碎语:
			应用程序开发完成了,假设您的团队使用的是敏捷模式进行项目开发,大概2个星期左右
		就要迭代出一个小版本。通常都需要把本地环境中(开发环境)的应用项目进行以下操作:
			打包-->发布到测试环境-->运行-->测试人员测试-->发现bug通知开发人员-->开发人员解决bug
		
		

(当然咯,对于一些大型公司,他们还会进行代码检测,评审之类的,呵呵,你懂的。
		紧接着项目经理,进行数据采集,分析,绘制相应的报告图,开会之类的,你懂的。)
	
	

(2)前言碎语2:
				绝大部分情况下,开发完成后的应用项目都是部署到Linux中的(windows相对来说内存管理方面不如Linux)像这里面的环境的搭建,开墙,安全检测等,基本上是架构师和项目经理之类的去搞的。。。这里面的东西搞	好了后,项目测试通过了(当然测试不只一次)。

紧接着项目准备上线,然后运维人员就参与进来了。。。呵呵,是不是很有趣,现在的项目开发基本上不可能一
		个人单打独斗了。
	说了半天,笔者好像都没有开始打包-->部署-->运行项目! 你在干什么?跟大家聊人生谈理想呀,呵呵…………

(3)Intellij idea中使用maven进行项目打包
其实很简单,就是使用maven,编译,测试,打包(jar包),安装这一套东西。有maven经验的都会!直接上图:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值