spring切面:注解:环绕增强
2017-01-12 23:13
603 查看
1.AroundLogger2注解环绕增强类
2.applicationContext.xml配置文件
3.dao.impl/UserDaoImpl类
4.Test类
package aop; import java.util.Arrays; import org.apache.log4j.Logger; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @Aspect public class AroundLogger2 { private static final Logger log = Logger.getLogger(AroundLogger.class); @Around("execution(* biz.impl.*.*(..))") public Object around(ProceedingJoinPoint jp) { try { System.out.println("进入前置增强###"); log.info("调用的方法:" + jp.getSignature().getName() + ",传递参数:" + Arrays.toString(jp.getArgs())); Object result = jp.proceed(); System.out.println("进入后置增强###"); log.info("调用的方法:" + jp.getSignature().getName() + ",传递参数:" + Arrays.toString(jp.getArgs()) + ",返回参数:" + result); return result; } catch (Throwable e) { System.out.println("出现异常"); log.info("调用的方法:" + jp.getSignature().getName() + ",传递参数:" + Arrays.toString(jp.getArgs()) + ",异常信息:" + e); e.printStackTrace(); } return null; } }
2.applicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd"> <!-- 将前置增强类配成bean,交给spring管理 <bean id="loggerBefore" class="aop.LoggerBefore"></bean> 将后置增强类配成bean,交给spring管理 <bean id="afterReturning" class="aop.AfterReturning"></bean> 配置切面(将增强类关联给某个条件范围内的方法) <bean id="errorLogger" class="aop.ErrorLogger"></bean> --> <!-- <bean id="aroundLogger" class="aop.AroundLogger"></bean> --> <!-- <bean class="aop.UserLogger"></bean> --> <bean class="aop.AroundLogger2"></bean> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <!-- <aop:config> 配置切入点pointcut <aop:pointcut expression="execution(* biz.impl.*.*(..))" id="myPoint"/> <aop:advisor advice-ref="loggerBefore" pointcut-ref="myPoint"/> <aop:advisor advice-ref="afterReturning" pointcut-ref="myPoint"/> <aop:advisor advice-ref="errorLogger" pointcut-ref="myPoint"/> <aop:advisor advice-ref="aroundLogger" pointcut-ref="myPoint"/> </aop:config> --> <bean id="userBiz" class="biz.impl.UserBizImpl" p:userDao-ref="userDao"> <!-- <property name="userDao" ref="userDao2"></property> --> </bean> <bean id="userDao" class="dao.impl.UserDaoImpl" /> <bean id="userDao2" class="dao.impl.UserDaoImpl2" /> </bean> </beans>
3.dao.impl/UserDaoImpl类
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; } }
4.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 { /** * @param args */ public static void main(String[] args) { //加载spring容器,解析配置文件 ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); /*HelloWorld helloWorld=(HelloWorld) ac.getBean("helloWorld"); System.out.println("你好:"+helloWorld.getName()+","+helloWorld.getSet().size()+","+helloWorld.getMap().get("u1"));*/ UserBiz userBiz=(UserBiz) ac.getBean("userBiz"); User u= userBiz.getUser(101); System.out.println(u.getUname()+","+u.getAge()); } }
相关文章推荐
- spring切面:注解:前后置增强(不带参数、函数详情)
- spring切面:注解:前后置增强(带参数、函数详情)
- spring切面:注解:抛出异常增强
- spring切面:注解:最终增强
- Spring 自定义注解,带增强,环绕的注解
- spring切面:接口:环绕增强
- spring中的增强:注解和schema配置几种情况
- Spring 返回通知&异常通知&环绕通知(注解)
- Spring 实战-第四章-4.3使用注解创建切面
- Spring 通过注解方式实现AOP切面编程
- spring切面:接口:异常增强
- spring_由注解实现AOP面向切面编程_实现动态代理
- Spring 基于 Aspect 注解的增强实现
- Spring3.0 学习-AOP面向切面编程_Spring AOP的注解模式即Aspectj模式
- Spring整理11 -- 面对切面(AOP)1 -- 注解配置的方式实现AOP
- Spring-用 AspectJ 注解声明切面
- Spring aop——前置增强和后置增强 使用注解Aspect和非侵入式配置
- Spring 之定义切面尝试(基于注解)
- spring : advice 前增强、后增强、环绕增强、异常增加 --其实就是动态代理
- 面向切面的 Spring —— 如何使用注解创建切面?