spring使用xml形式aop实现

导入必须的aspectjrt.jar     aspectjweaver.jar     cglib-nodep.jar。

用添加用户简单实例说明

1.用户接口

package aopXml;

public interface IUser {
    /**
     * 添加用户
     */
    public void add();
}

2.用户实现类

package aopXml;

public class UserImpl implements IUser {
    /**
     * 添加用户
     */
    @Override
    public void add() {
        // TODO Auto-generated method stub
        System.out.println("添加用户......");
    }
}

3.用户服务层

package aopXml;

public class UserService{
    private IUser userDAO;
    
    public void setUserDAO(IUser userDAO) {
        this.userDAO = userDAO;
    }

    /**
     * 添加用户
     */
    public void save() {
        userDAO.add();
    }
    
}

4.切面类

package aopXml;


/**
 * 切面类
 * @author Administrator
 *
 */
public class Check {
    public void checkVal(){
        System.out.println("添加用户方法执行之前执行该校验方法.........");
    }
}

5.spring配置

<?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"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="
                      http://www.springframework.org/schema/beans
                      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                      http://www.springframework.org/schema/context
                       http://www.springframework.org/schema/context/spring-context-2.5.xsd
                     http://www.springframework.org/schema/aop
                     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                     http://www.springframework.org/schema/tx
                     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    <!-- 使用注解配置 -->
      <!-- <context:annotation-config/> -->
      <!-- aop自动产生动态代理配置 -->
      <!-- <aop:aspectj-autoproxy/> -->
      <!-- 服务对象配置 -->
      <bean id="u" class="aopXml.UserImpl"></bean>
      <bean id="userService" class="aopXml.UserService">
          <property name="userDAO" ref="u"></property>
      </bean>
      <!-- 切面类配置 -->
      <bean id="check" class="aopXml.Check"></bean>
      <!-- aop的xml配置 -->
      <aop:config>  
          <!-- 注入切面类 -->
        <aop:aspect ref="check">
           <!-- 切面方法 (指定在切入点切入的方法)-->  
           <aop:before pointcut-ref="MyAopPointcut" method="checkVal"/>
           <!-- 切面方法关联到切入点 -->
           <aop:pointcut id="MyAopPointcut" expression="execution(public * aopXml.UserService.save())"/>  
        </aop:aspect>  
      </aop:config>
</beans>

6.测试类

package aopXml;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import aopXml.UserService;
public class AOPTest {
    @Test
    public void testAopXml(){
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService)applicationContext.getBean("userService");
        userService.save();
    }
}

7.最后结果

添加用户方法执行之前执行该校验方法.........
添加用户......


你可能感兴趣的:(spring,AOP,xml,IOC)