zoukankan      html  css  js  c++  java
  • Java 10.Spring--AOP编程

    1.创建web项目

    2.引入jar包

    在原有的jar包加上AOP的jar包

    3.日志

    4.准备目标对象

    先创建接口

    在创建实现类

    package com.Spring.aop.service;
    
    public class UserServceImpl implements UserService {
    
    	@Override
    	public void save() {
    		System.out.println("保存用户");
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void delete() {
    		System.out.println("删除用户");
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void update() {
    		System.out.println("更新用户");
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void select() {
    		System.out.println("查询用户");
    		// TODO Auto-generated method stub
    		
    	}
    	 
    
    }
    

      

    5.编写通知

    前置通知:在目标方法之前调用

    后置通知(如果出现异常就不调用):在目标方法之后调用

    后置通知(无论是否出现异常都会调用):在目标方法之后调用

    环绕通知:在目标方法之后调用

    异常通知:出现异常调用

    package com.Spring.aop.advice;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    
    public class TransactionAdvice {
    //	前置通知:在目标方法之前调用
    //
    //	后置通知(如果出现异常就不调用):在目标方法之后调用
    //
    //	后置通知(无论是否出现异常都会调用):在目标方法之后调用
    //
    //	环绕通知:在目标方法之后调用
    //
    //	异常通知:出现异常调用
    	public void before() {
    		System.out.println("前置通知被执行");
    	}
    	
    	public void afterReturning() {
    		System.out.println("后置通知(如果出现异常就不调用)");
    		
    	}
    	public void after() {
    		System.out.println("后置通知(无论是否出现异常都会调用)");
    		
    	}
    	public void afterException() {
    		System.out.println("异常通知被执行");
    	}
    	public Object around(ProceedingJoinPoint point) throws Throwable {
    		System.out.println();
    		Object proceed = point.proceed();
    		return proceed;
    		
    	}
    
    }
    

      

    6.配置织入,将通知织入到目标对象

    加入AOP名称空间

    <?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:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop 
            https://www.springframework.org/schema/aop/spring-aop.xsd"
            >
    		
    		
    		<!-- 目标对象 -->
           	<bean name="userServce" class= "com.Spring.aop.service.UserServceImpl"></bean>
    		<!-- 通知对象 -->
    		<bean name="transactionAdvice" class= "com.Spring.aop.advice.TransactionAdvice" ></bean>
    		<!-- 将通知对象织入到目标对象 -->
    		<aop:config>
    			<!-- 选择切入点 -->
    			<aop:pointcut expression="execution(. com.Spring.aop.service..*ServceImpl.*(..))" id="pointcut"/>
    			<aop:aspect ref="transactionAdvice">
    				<aop:before method="before" pointcut-ref="pointcut"/>
    				<aop:after-returning method="afterReturning"/>
    				<aop:after method="after" pointcut-ref="pointcut"/>
    				<aop:around method="around" pointcut-ref="pointcut"/>
    				<aop:after-throwing method="afterException" pointcut-ref="pointcut"/>
    			</aop:aspect>
    			
    		</aop:config>
           	
           	
    </beans>
    

      

    7.测试

    package com.Spring.aop.service;
    
    import javax.annotation.Resource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class AopTest {
    	@Resource(name="userService")
    	private UserService userService; 
    	
    	@Test
    	public void testSave() {
    		userService.save("yu jack");
    	}
    	
    	@Test
    	public void testUpdate() {
    		userService.update();
    	}
    	
    }
    

      

  • 相关阅读:
    php使用cookie来保存用户登录信息
    Linux下进程操作
    TortoiseSVN无法编辑日志信息的解决方法
    用DIV布局制作公告板
    HashMap的遍历
    实现文本滚动
    子DIV块中设置margintop时影响父DIV块位置的解决办法
    php使用session来保存用户登录信息
    javascript jquery ajax动态提交多个参数 api测试 拂晓风起
    javascript 处理返回json中的\u中文乱码问题(也不是乱码了,就是\u编码) 拂晓风起
  • 原文地址:https://www.cnblogs.com/yuzhenfu/p/12170664.html
Copyright © 2011-2022 走看看