19/6/5 日志工具,动态代理 ,注解,枚举,工厂
日志:
其实就是一个工具类:
日志框架说起高大上,实则就是导入一个jar包。
日志包Log4J的使用:
导入jar包:log4j
TRACE 指定日志级别:规定不同的信息在输出的时候级别不一样。
常用日志级别:ALL (任何信息都可以输出)TRACE(堆、栈信息(之前用过的e.printtrace))、BUG、INFO、WARN、ERROR、FATAL(更严重的信息 ) 越往下走越来越细
debug之前的信息都会输出
off 任何都不会输出。
比他级别低的都不回输出,只会输出比自己级别高的。
console: 规定在控制台输出的格式。
f1在这里代表在文件(file)里面输出
在测试阶段基本用不到文件输出,都是i在控制台查看的
最上面的 console f1 这些都是用户自定义的
参数比较重要。一般参数都会给你参考规范提供参考。
测试:
日志技术,配合日志配置日志方法
给个字节码对象,一般都是当前类
自己把不同信息定义成不同级别
这时候要是不想要输出了,配置文件里面改成off即可
这就会比syso方便很多,无需自己去注释。
在d盘建立日志文件 ,打印出来
d盘里还会有这个控制台的信息
以后自己的程序就可以通过添加日志输出,来取代syso输出。
后面的学习的框架的源码中有很多日志输出信息。我们添加jar包和配置文件就可以看到框架中输出的信息了。
在Servlet里面加日志jar包和配置文件 控制台没有输出的时候,说明Servlet里面没有
这些代码。
动态代理
MyBatis和Spring 框架的底层都有。
框架的底层:反射(核心),动态代理。
增强一个类的功能的方法:
之前用过:继承、重写:被增强的对象不能变,被增强的功能可以变。
==装饰者模式:==被增强的对象可以变,但是被增强的功能不能变。
动态代理: 被增强的对象可以变,被增强的功能可以变。
动态代理的实现:
Proxy:JDK 自带的动态代理:
cglib:
Java字节码增强:
实现:
得到目标对象的接口,接口里面的方法就是要被增强的方法
Proxy增强要求目标对象必须要有接口。
使用动态代理来创建代理对象
三种动态代理的条件:
注解:
以后写框架 要么用注解,要么用配置。
注解可以替换配置
Servlet 2.5只支持配置,不支持注解。
Servlet3.0都支持。
注解的属性必须加小括号,不是方法,就叫属性。
判断当前类是否有注解,有的话可以获取这个注解
注解属性的数据类型:
常用的八种:
String
enum(枚举)
Class反射类型
8种基本类型
注解类型
以上所有类型的一维数组。
JAVA里面的工厂:
简单工厂:
应用场景:一个父类,若干个子类,工厂创建子类对象。
先写抽象的产品。
在写产品的父类,
然后再构造工厂。
工厂方法
一个父类(抽象产品)
若干子类(实体产品)。
一个父类工厂(抽象工厂)
若干个子类(实体工厂)
抽象工厂
多个父类
每个父类若干个子类。
也就相当于