⭐⭐⭐⭐⭐⭐
Github主页https://github.com/A-BigTree
笔记链接https://github.com/A-BigTree/Code_Learning
⭐⭐⭐⭐⭐⭐
如果可以,麻烦各位看官顺手点个star~
如果文章对你有所帮助,可以点赞收藏⭐支持一下博主~
一个项目,一个工程,导出为一个war包,在一个Tomcat上运行。也叫all in one。
一个项目(对应IDEA中的一个project),拆分成很多个模块,每个模块是一个IDEA中的一个module。每一个工程都是运行在自己的Tomcat上。模块之间可以互相调用。每一个模块内部可以看成是一个单一架构的应用。
框架 = jar包 + 配置文件
MyBatis
最初是Apache的一个开源项目iBatis
, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x
正式更名为MyBatis
。代码于2013年11月迁移到Github;
iBatis
一词来源于“internet
”和“abatis
”的组合,是一个基于Java的持久层框架。 iBatis
提供的持久层框架包括SQL Maps和Data Access Objects(DAO);
Mybatis
的最大特点:轻量级。相对于Hibernate省略了大量不常用的功能,整体轻巧又高效;
开发效率:Hibernate > Mybatis > JDBC
;
运行效率:JDBC > Mybatis > Hibernate
;
System.out
对象是一个输出流对象,所以控制台输出信息本质上是I/O操作。而I/O操作是项目运行过程中两大性能瓶颈之一。
项目上线时,希望把所有(或一部分)sout
打印关闭,但是只能手动一个一个查找,耗费开发人员的极大精力,因为sout
的无度使用会使它分散在项目的各个角落。
日志框架会按照事件的严重程度来划分级别,例如:
通过在配置文件中指定某一个日志级别来控制系统要打印的内容。日志框架会打印当前指定级别的日志和比当前指定级别更严重的级别的日志。
例如在开发阶段,我们指定debug级别,项目上线修改成info级别,那么所有debug级别的日志就都不打印了,不需要到项目代码中一个一个修改,非常方便。
使用日志框架不一定是打印到控制台,也可以保存到文件中或者保存到数据库。这就看具体的项目维护需求。
打印日志数据可以使用日志框架的默认格式,也可以根据需要定制。
将来我们开发的应用系统中,不仅包含Java代码,还有很多中间件服务器。任何子系统出现故障我们都是通过日志来定位问题、分析故障原因。甚至更复杂的系统还会专门开发日志子系统,在主系统出现问题时抓取日志数据供维护人员参考。
而日志数据必须要有确定格式才便于格式化和抓取,这肯定不是随意写sout就能实现的。
门面:类似于标准层、接口层
名称 | 说明 |
---|---|
JCL(Jakarta Commons Logging) | 陈旧 |
SLF4J(Simple Logging Facade for Java) | 适合(同一作者) |
jboss-logging | 特殊专业领域使用 |
名称 | 说明 |
---|---|
log4j | 最初版(同一作者) |
JUL(java.util.logging) | JDK自带 |
log4j2 | Apache收购log4j后全面重构,内部实现和log4j完全不同 |
logback | 优雅、强大(同一作者) |
门面:SLF4J
实现:logback
<dependency>
<groupId>ch.qos.logbackgroupId>
<artifactId>logback-classicartifactId>
<version>1.4.6version>
<scope>compilescope>
dependency>
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogTest {
private final Logger logger = LoggerFactory.getLogger(LogTest.class);
@Test
public void testLog(){
logger.trace("hello trace");
logger.debug("hello, debug");
logger.info("hello info");
logger.warn("hello warn");
logger.error("hello error");
}
}
Logback
要求配置文件名称必须是logback.xml
,存放路径在main/resources
目录下。
配置文件示例如下:
<configuration debug="true">
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%npattern>
<charset>UTF-8charset>
encoder>
appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
root>
<logger name="com.atguigu.mybatis" level="DEBUG" />
configuration>
使用Lombok
注解就可以省略生成getXxx()
、setXxx()
方法、toString()
方法、构造器等固定格式代码的繁琐操作,提高开发效率。包括Logger
日志对象。
Lombok
是将自动生成的代码织入字节码文件中,从而实现:源代码没有,但是字节码文件有——毕竟我们最终运行的是字节码文件,只要字节码文件中有即可。而这个过程因为要参与源文件编译,所以需要安装IDEA插件。
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.26version>
<scope>compilescope>
dependency>
注解 | 作用 |
---|---|
@Data | 生成getXxx()方法、setXxx()方法、toString()、equals()、canEqual()、hashCode()方法 |
@AllArgsConstructor | 生成全参构造器 |
@NoArgsConstructor | 生成无参构造器 |
@Slf4j | 生成日志对象 |
@Getter | 生成getXxx()方法 |
@Setter | 生成setXxx()方法 |
@ToString | 生成toString()方法 |