Spring AOP 使用注解配置

第一步建立切面类

@Component
@Aspect
public class MyAdvice {
    @Pointcut("execution (* com.sunwenxu.e_spring_aop_annotaion.service.impl.*ServiceImpl.*(..))")
    private void pointcut() {} // 声明一个切入点,pointcut为切入点名称
    @Before("pointcut()")
    public void  before(){
        System.out.println("这是前置通知");
    }
    @After("pointcut()")
    public void after(){
        System.out.println("这是后置通知");
    }
}

第二步在spring的配置文件中,开启注解的扫描

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:p="http://www.springframework.org/schema/p" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
							http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
							http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
							http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
							http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
	<!-- 配置注解扫面路径 -->
    <aop:aspectj-autoproxy />
    <!-- 配置注解扫面路径 -->
    <context:component-scan base-package="com.sunwenxu.e_spring_aop_annotaion"></context:component-scan>

</beans>

第三步建立业务的接口和类,方便aop的过滤测试。

public interface UserService {
    public void  add();
    public void  del();
    public void  modify();
}
@Service
public class UserServiceImpl implements UserService {
    @Override
    public void add() {
        System.out.println("add...");
    }

    @Override
    public void del() {
        System.out.println("del...");
    }

    @Override
    public void modify() {
        System.out.println("modify...");
    }
}

第四步编写测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:e_1_applicationContext.xml")
public class Demo {
    @Autowired
    private UserService userService;

    @Test
    public void fun01(){
        userService.add();
    }
}

打印结果

这是前置通知
add...
这是后置通知

猜你喜欢

转载自blog.csdn.net/qq_35495339/article/details/91800865