spring切面:接口:环绕增强

1.aop/AroundLogger环绕增强类

package aop;

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

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.log4j.Logger;

import net.sf.cglib.proxy.MethodProxy;

public class AroundLogger implements MethodInterceptor {
	private static final Logger log = Logger.getLogger(AroundLogger.class);

	@Override
	public Object invoke(MethodInvocation arg0) throws Throwable {
		System.out.println("环绕——前置增强");
		Object target = arg0.getThis();//获取被代理对象
		Method method = arg0.getMethod();//获取被代理方法
		Object[] args = arg0.getArguments();//获取参数列表
		log.info("调用方法:"+method.getName() +",传参:"+ Arrays.toString(args));
		try {
			Object obj = arg0.proceed();//调用目标方法,获取目标方法返回值
			log.info(obj);
			return obj;
		} catch (Throwable e) {
			log.error("出现异常" + e);
		}
		return null;
	}

}

2.applicationContext.xml



 
	
	
	   
	   
	 
	   
	
    
      
    

3.dao.impl/UserImpl类

package dao.impl;

import javax.management.RuntimeErrorException;

import dao.UserDao;
import entity.User;

public class UserDaoImpl implements UserDao {

	@Override
	public User findUser() {
		System.out.println("===========Dao层查询User 1==============");
		User u=new User("Tom",22);
		//throw new RuntimeException("出现异常");
		return u;
	}
}

3.Test类

package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import entity.User;

import biz.UserBiz;
import biz.impl.UserBizImpl;

import ioc.HelloWorld;

public class TestMain {
	public static void main(String[] args) {
		
		//加载spring容器,解析配置文件
		ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
		 UserBiz userBiz=(UserBiz) ac.getBean("userBiz");
		//getUser()传入参数,测试环绕增强获取参数列表
		 User u= userBiz.getUser(101);
		 System.out.println(u.getUname()+","+u.getAge());
	}

}

spring切面:接口:环绕增强_第1张图片

你可能感兴趣的:(Spring)