Spring-Aop-XML配置方式

什么是面向切面编程

把纵向编码发展为横向编码,给某一块代码添加一些新的功能

在JavaSE的学习中,我们常用的代码复用方法是继承,通过继承的方法可以实现业务逻辑,
继承是树状的,如下所示,即为向下发展的编程逻辑
在这里插入图片描述
然而运用了面向切面编程的思想之后
在这里插入图片描述

五大名词解释

织入:就是切入,将切面与切入点结合这是个逻辑过程
通知:增强方法
切入点:选定的方法
切面:被通知的对象
连接点:任何类的方法

Aop编程的特点

1.低侵入性:即不改变原有代码!只是在前或后添加增强方法
2.扩展性:扩展了基本的业务功能

Aop原理:代理模式

静态代理模式:以AspectJ为代表
动态代理模式:Aop

将复杂的需求分解出不同的方面,将散布在系统中的公共功能集中解决!其底层是通过代理模式组装起来进行运行!
常见的用途:记录日志
方法前的日志:访问者、权限、登入方式等
方法后的日志:状态标记等

编程步骤

1.导入相关jar包

在这里插入图片描述

2.在主配置文件中引入约束

在这里插入图片描述

3.编写一个User类

package com.sxh.pojo;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {
   private String name;
   private String addr;
   private String memo;
   
   public void run() {
	   System.out.println(this.name+"在跑!!");
   }
   
@Override
public String toString() {
	return "User [name=" + name + ", address=" + addr + ", memo=" + memo + "]";
}

     
}

4.写一个增强方法

package com.sxh.aop;

import java.lang.reflect.Method;
import java.util.Arrays;

import org.apache.log4j.Logger;
import org.springframework.aop.MethodBeforeAdvice;


/*
 * MethodBeforeAdvice接口来实现前置增强
 */
public class LogBeforeAdvice implements MethodBeforeAdvice{
	/* 1.创建一个日志对象  clazz:给哪个类记录日志*/
  private static final Logger logger=Logger.getLogger(LogBeforeAdvice.class);
	

	@Override
	public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
		// TODO Auto-generated method stub
		//2.打印
		logger.info("调用"+arg2+"的"+arg0.getName()+"方法入参:"+Arrays.toString(arg1));
	}

}

5.在主配置文件中进行配置

在这里插入图片描述

6.编写一个测试类

public class SpringTest {
	private static ApplicationContext ctx;
	public static void main(String[] args) {
		 ctx=new ClassPathXmlApplicationContext("applicationContext.xml");	
		 User user=ctx.getBean("user",User.class);
		 user.run();
	}
}

7.运行结果说明

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值