Spring03 手写AOP——代理模式

什么是AOP

AOP(Aspect Orient Programming)面向切面编程
它的目的就是解耦合,将公共的逻辑(切面)单拎出来开发,在需要的方法中自动织入。默认使用的jdk动态代理
利用AOP可以对业务逻辑的各个部分(非主业务逻辑)进行分离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性
切面: 就是非主业务逻辑,例如: 日志, 事务, 权限等
AOP 底层, 就是采用动态代理模式实现的. 采用了两种代理: JDK 的动态代理, 与CGLIB的动态代理. 默认使用的是JDK动态代理

面向切面的有点:
    1) 减少重复, 复用代码
    2) 专注于业务功能

使用 logback 日志框架

  • 添加logback依赖
<!--添加logback依赖-->
<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.2.3</version>
</dependency>
  • 添加logback配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--
  scan,当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  scanPeriod,设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  debug,当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

-->
<configuration debug="false" scan="true" scanPeriod="1 seconds">

	<!--
	contextName ,设置日志上下文名称,可以通过%contextName来打印日志上下文名称
	-->
	<contextName>logback</contextName>
	<!--
	property可以用来设置变量,可以通过${name}来访问,有以下的属性
		name,用于${name}访问的key
		value,用于${name}访问的value
		file ,用于指定配置文件的路径,他的作用在于,如果你有多个配置信息的话,可以直接写在配置文件中,然后通过file引入
			   <property file="src/main/java/chapters/configuration/variables.properties" />
		resource作用和file一样,但是,它是可以直接从classpath路径下引入配置文件
			   <property resource="resource.properties" />
	-->
	<property name="log.path" value="src/test/resources/logback.log"/>
	<!--
	appender格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。
	-->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<!-- <filter class="com.example.logback.filter.MyFilter" /> -->
		<!--
		系统定义的拦截器,例如我们用ThresholdFilter来过滤掉INFO级别以下的日志不输出到控制台中
		-->
		<!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
		<!--&lt;!&ndash;-->
		<!--Logger可以被分配级别。级别包括:TRACE、DEBUG、INFO、WARN和ERROR,-->
		<!--程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。-->
		<!--如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、 WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。为确保所有logger都能够最终继承一个级别,根logger总是有级别,默认情况下,这个级别是DEBUG。-->
		<!--&ndash;&gt;-->
		<!--<level>INFO</level>-->
		<!--</filter>-->
		<!--encoder和pattern节点组合用于具体输出的日志格式-->
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>
	<ap
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值