zoukankan      html  css  js  c++  java
  • Spring之AOP Annotation方式

    业务接口

    package dao;
    
    public interface UserDao {
    	public void addUser();
    }
    


    接口实现

    package dao;
    
    public class UserDaoImpl implements UserDao {
    
    	@Override
    	public void addUser() {
    		// TODO Auto-generated method stub
    		System.out.println("添加用户");
    
    	}
    
    }
    


    代理类

    package aspect;
    
    import org.aspectj.lang.annotation.After;
    import org.aspectj.lang.annotation.AfterReturning;
    import org.aspectj.lang.annotation.AfterThrowing;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    
    @Aspect
    public class UserDaoAspect { //类中开发切入点和各种通知
    
    	
        @Pointcut("execution(* dao..*.*(..))")   //切入点    签名就是下面的方法名
    	public void sayHello(){};
    	
    	@Before("sayHello()")       //前置通知
    	public void startSay(){
    		System.out.println("Good Morning");
    	}
    	@AfterReturning("sayHello()")   //后置通知
    	public void endSay(){
    		System.out.println("bye bye");
    	}
    	@AfterThrowing("sayHello()")    //异常通知
    	public void doThrows(){
    		System.out.println("异常通知");
    	}
    	@After("sayHello()")       //后通知
    	public void doFinally(){
    		System.out.println("最终执行");
    	}
    }
    


    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-2.5.xsd
    	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
    	
    	<bean id="userDao" class="dao.UserDaoImpl" />
    	
    	<bean id="aspectj" class="aspect.UserDaoAspect"></bean>
    	
    	<aop:aspectj-autoproxy/>
    </beans>


    测试类

    package test;
    
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import dao.UserDao;
    import dao.UserDaoImpl;
    
    public class Test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		
    		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
    		UserDao dao=(UserDao)context.getBean("userDao");
    		dao.addUser();
    	}
    
    }
    


  • 相关阅读:
    Bitmap\Bytes\BitmapImage相互转换
    枚举值为什么使用1,2,4,8,16,32等2的幂方(转)
    获取电脑信息
    操作内存的帮助类
    C#调用DLL(整理)
    [原]java集合类TreeMap和TreeSet
    [原]《面试题精选》08.颠倒句子中单词的顺序
    [原]数据结构与对象的区别
    [原]初步了解Hadoop平台
    [原]《程序员面试题精选》06.查找最小的k个元素
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131556.html
Copyright © 2011-2022 走看看