AOP中的注解自动装配通知
?
AOP中的注解自动装配通知
?
?
?
?一、创建一个注解类:
?
注意:aop的引入
package cn.csdn.util;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;@Aspectpublic class ServiceImpl implements Service {/** * @Before("execution(* work())")方法中的第一个参数“*”是返回值,第二个参数“work()”是方法的名 * */@Before("execution(* goWork())")public void eat(JoinPoint jp) {// TODO Auto-generated method stubSystem.out.println("I'm eating!!!");/* * 输出的结果是: I'm eating!!! 我正在工作! */}/** * After(execution(* * cn.csdn.service.Emp*.*(..)))方法的第一个参数(*)是返回值,第二个参数是位于cn.csdn.service * 包下的前缀是Emp的类的所有方法,((..))代表的是方法的参数可以是可变的参数 * */@After("execution(* cn.csdn.service.Emp*.*(..))")public void goCompany() {// TODO Auto-generated method stubSystem.out.println("I want to go home");}/** * 总结返回值有void和*两种,方法的名字的表示方式有直接写方法的名字、写出那个类的哪个方法或类和方法的名字模糊匹配*/@AfterThrowing(pointcut = "execution(* *..EmpService*.*(..))", throwing = "ex")public void leave(Exception ex) {// TODO Auto-generated method stubSystem.out.println("I want leav");}@Before("execution(* cn.csdn.service.EmpServiceImpl.*(..))")public void goHome() {// TODO Auto-generated method stubSystem.out.println("I want go Home");}@Around("execution(* *..Emp*.goWork(..))")public void signIn() {// TODO Auto-generated method stubSystem.out.println("I around before");System.out.println("I around after");}}
?
xml中的部分代码如下:
<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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" ><bean id="empServiceImpl" class="cn.csdn.util.ServiceImpl"></bean><aop:aspectj-autoproxy/></beans>? 源代码如下:
?