初次使用AOP

1.主要jar包

2.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: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
            http://www.springframework.org/schema/context/spring-context-4.1.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--IOC 注解  让spring知道要扫描哪个包-->
    <context:component-scan base-package="com.sii"></context:component-scan>

    <!-- 开启aop注解方式 -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

</beans>

3.定义切面类



import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component      //加入IOC容器
@Aspect         //指定当前类为切面类
public class Aop {
    //指定切入点表达式:拦截哪些方法,即为哪些类生成代理对象
    @Pointcut("execution(* com.sii.aop.test.*.*(..))")
    public void pointCut(){
        //这个方法的作用:因为每一个通知都需要配置切入点表达式,就把都需要的表达式,写在了一个空的类中,
        //使用时,引用这个类就可以了,方便管理。
    }

    @Before("pointCut()")
    public void begin(){
        System.out.println("***开启事务***");
    }

    @After("pointCut()")
    public void after(){
        System.out.println("***关闭事务***");
    }
}

4.定义接口,实现类,和 未实现接口的类

      接口Animal


public interface Animal {
    public void eat();
}

      实现类Dog


import org.springframework.stereotype.Component;

@Component
public class Dog implements Animal {
    @Override
    public void eat() {
        System.out.println("实现了接口");
    }
}

      类Cat

import org.springframework.stereotype.Component;

@Component
public class Cat {
    public void eat(){
        System.out.println("未实现接口");
    }
}

5.测试

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class TestAop {
    @Autowired
    private Animal dog;

    @Autowired
    private Cat cat;

    @Test
    public void test1() {
        dog.eat();
        cat.eat();
    }
}

结果:

扫描二维码关注公众号,回复: 2815886 查看本文章

猜你喜欢

转载自blog.csdn.net/shi_nu_bi/article/details/81184714