AOP的实现方式

AOP(面向切面编程)是OOP的补充,用于解决系统层面问题。主要实现方式包括:1.基于Spring容器的自动代理;2.AspectJ技术结合Spring AOP配置;3.使用注解进行AOP编程。
摘要由CSDN通过智能技术生成
AOP(Aspect Oriented Programming)
被称为面向切面编程,是OOP(面向对象编程的一种补充),主要用来解决一些系统层面上的问题
AOP的三种实现方式:
1.基于Spring容器的自动代理实现AOP:
 	<!--被代理对象-->
    <bean id="orderServiceTargetBean" class="com.apesource.service.impl.OrderServiceImpl"/>
    <bean id="userServiceTargetBean" class="com.apesource.service.impl.UserServiceImpl"/>

    <!--通知(Advice)-->
    <bean id="logAdviceBean" class="com.apesource.LogAdvice"/>
    <bean id="performanceAdviceBean" class="com.apesource.PerformanceAdvice"/>

    <!--切入点(Poinecut)-->
    <bean id="createPointcutBean" class="org.springframework.aop.support.JdkRegexpMethodPointcut">
        <property name="pattern" value=".*create.*"/>
    </bean>

    <!--Advisor(高级通知) = Advice(通知) + Pointcut(切入点)-->
    <bean id="performanceAdvisorBean" class="org.springframework.aop.support.DefaultPointcutAdvisor">
        <!--注入通知-->
        <property name="advice" ref="performanceAdviceBean"/>

        <!--注入切入点-->
        <property name="pointcut" ref="createPointcutBean"/>
    </bean>

<!--自动代理对象-->
    <bean 				class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

        <!--被代理对象(目标对象)列表:根据Bean名称规则指定那些bean创建自动代理-->
        <property name="beanNames">
            <list>
                <value>*TargetBean</value>
            </list>
        </property>

        <!--通知列表-->
        <property name="interceptorNames">
            <list>
                <value>logAdviceBean</value>
                <value>performanceAdvisorBean</value>
            </list>
        </property>
    </bean>
2.AspectJ技术,通过切面Aspect,基于Spring AOP的配置实现AOP:
 
 	/**
     * 前置通知
     */
    @Before(EXPRESSION)
    public void beforeAdvice(JoinPoint joinPoint){
   
        System.out.println("=========【使用AspectJ实现前置通知
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值