0
点赞
收藏
分享

微信扫一扫

spring-aop使用

Mezereon 2022-03-30 阅读 61

编程方式使用aop

编写一个方法类

public class User {
    public void a() {
        System.out.println("a.....");
    }

    public void b() {
        System.out.println("b.....");
    }
}

写一个代理类

@Repository
@Aspect
public class Log {
    //在注解的情况下不能同时使用  before生效 after不生效
    @After("execution(public * *..User.*(..))")
    @Before("execution(public * *..User.*(..))")
    public void init() {
        System.out.println("init....");
    }
}

spring配置类

@Configuration
@ComponentScan("cn.chenxiejia")
//启用aop代理
@EnableAspectJAutoProxy
public class AppConfig {
    @Bean
    public User u() {
        return new User();
    }

    public Log l() {
        return new Log();
    }
}

测试类

public class App {
    public static void main(String[] args) {
        var app = new AnnotationConfigApplicationContext(AppConfig.class);
        User user = app.getBean("u", User.class);
        user.a();
    }
}

测试结果

 配置方式使用aop

配置文件applicaltionContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<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="http://www.springframework.org/schema/beans"
       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">
    <context:component-scan base-package="cn.chenxiejia.entity"/>
    <bean name="user" class="cn.chenxiejia.entity.User"/>
    <bean name="log" class="cn.chenxiejia.entity.log"/>
    <aop:config>
        <!--第一个*表示返回值类型 第二个*表示包名 ..表示当前包及子包 -->
        <!--在User类使用方法时添加执行新的方法-->
        <aop:pointcut id="p1" expression="execution(public * *..User.*(..))"/>
        <aop:pointcut id="p2" expression="execution(public * *..User.*(..))"/>
        <!--添加执行的方法-->
        <aop:aspect ref="log">
            <aop:after method="init" pointcut-ref="p2"/>
        </aop:aspect>

        <aop:aspect ref="log">
            <aop:before method="init" pointcut-ref="p1"/>
        </aop:aspect>
    </aop:config>
</beans>
举报

相关推荐

spring-aop

Spring-aop

Spring-AOP总结

【二:Spring-AOP】

Spring-AOP 深度剖析

对Spring-AOP的理解

Spring-AOP面向切面编程

0 条评论