Spring中AOP开发配置入门案例

该AOP开发入门案例采用XML文件方式配置开发(非注解方式)共包含一个xml文件和4个Java类,创建好web工程后引入相应jar包(文末会给出),建好包(若自定义包名注意更改类中的包名),将xml文件和Java类复制到包中即可通过测试类进行测试。

Spring的applicationContext.xml代码:


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd">
    
    
    
    
    
    
    
    
    
        
        
        
        
        
        
        
            
            
            
            
            
            
            
            
            
            
        

    

Dao接口代码:

package cn.muc.spring.demo3;

public interface CustomerDao {

    public void save();
    public String delete();
    public void update();
    public void find();
}

Dao实现类代码:

package cn.muc.spring.demo3;

public class CustomerDaoImpl implements CustomerDao {

    @Override
    public void save() {
        System.out.println("保存方法被调用了。。。");

    }

    @Override
    public String delete() {
        System.out.println("删除方法被调用了。。。");
        return "后置通知获得方法返回值";

    }

    @Override
    public void update() {
        System.out.println("更新方法被调用了。。。");

    }

    @Override
    public void find() {
        System.out.println("查找方法被调用了。。。");
        int a = 1 / 0;

    }

}

切面类代码:

package cn.muc.spring.demo3;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * 切面类
 * @author xufaye
 *
 */
public class MyAspectXML {

    /**
     * 前置通知
     */
    public void checkPri() {
        System.out.println("权限校验==================");
    }
    
    /**
     * 后置通知:可以获得方法返回值(通过传入对象类型的参数)
     */
    public void writeLog(Object result) {
        System.out.println("日志记录===============" + result);
    }
    /**
     * 环绕通知:比如可以用于性能监控
     * @throws Throwable 
     */
    public Object watch(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕前通知=========");
        Object obj = joinPoint.proceed();
        System.out.println("环绕后通知=========");
        return obj;
    }
    /**
     * 异常抛出通知
     */
    public void afterTrowing(Throwable ex) {
        System.out.println("异常抛出通知=========并获得异常信息:" + ex.getMessage());
    }
    
    /**
     * 最终通知:无论有没有异常都会执行,相当于finally代码块中的内容
     */
    public void after() {
        System.out.println("最终通知===========");
    }
}

测试类代码:

package cn.muc.spring.demo3;

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;

/**
 * AOP入门
 * @author xufaye
 *
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringDemo3 {

    @Resource(name="customerDao")
    private CustomerDao customerDao;
    @Test
    public void demo1() {
        customerDao.save();
        customerDao.delete();
        customerDao.update();
        customerDao.find();
        
        
    }
}

Java中AOP开发配置入门案例开发所需引入的jar包

com.springsource.org.aopalliance-1.0.0.jar【AOP联盟】

com.springsource.org.apache.commons.logging-1.1.1.jar【日志包】

com.springsource.org.apache.log4j-1.2.15.jar【日志包】

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar【aspectj】

spring-aop-4.2.4.RELEASE.jar【spring整合AOP包】

spring-aspects-4.2.4.RELEASE.jar【spring整合aspectj包】

spring-beans-4.2.4.RELEASE.jar【spring基础包】

spring-context-4.2.4.RELEASE.jar【spring基础包】

spring-core-4.2.4.RELEASE.jar【spring基础包】

spring-expression-4.2.4.RELEASE.jar【spring基础包】

spring-test-4.2.4.RELEASE.jar【spring整合Junit包】

你可能感兴趣的:(Java,Spring,AOP,入门案例)