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();
    	}
    
    }
    


  • 相关阅读:
    侧边栏导航(移动端商品--评论--详情)随楼层滑动高亮显示
    PHP+Mamcached分布式部署方案设计
    【转载】关于thinkphp标签最大嵌套层数的问题
    滚动条滑动到指定位置
    PHP面向对象
    KindEditor使用过程中,用JQ提交表单时,获取不到编辑器的内容
    【转载】mysql导入大批量数据出现MySQL server has gone away的解决方法
    DAO层使用mybatis框架有关实体类的有趣细节
    spring boot集成MyBatis 通用Mapper 使用总结
    12 Spring Data JPA:springDataJpa的运行原理以及基本操作(下)
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131556.html
Copyright © 2011-2022 走看看