首页 > 其他分享 >Spring Study -lesson12 -AOP(一)-2023-03-18

Spring Study -lesson12 -AOP(一)-2023-03-18

时间:2023-03-18 20:45:33浏览次数:49  
标签:03 Spring Study System aspectj org import public out

AOP方法一:通过Spring API接口实现

    <bean id="userService" class="com.feijian.service.UserServiceImpl"/>
    <bean id="log" class="com.feijian.log.Log"/>
    <bean id="afterLog" class="com.feijian.log.AfterLog"/>

    <!--    方式一:使用原生spring API接口-->
   <!--配置AOP    -->
<!--    <aop:config>-->
<!--    &lt;!&ndash;切入点 execution要执行的位置&ndash;&gt;-->
<!--        <aop:pointcut id="pointcut" expression="execution(* com.feijian.service.UserServiceImpl.*(..))"/>-->
<!--        -->
<!--    &lt;!&ndash;执行环绕增加!&ndash;&gt;-->
<!--        <aop:advisor advice-ref="log" pointcut-ref="pointcut"/>-->
<!--        <aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/>-->
<!--    </aop:config>-->

AOP方法二:自定义类实现-主要是切面定义

package com.feijian.diy;

public class DiyPointCut {
    public void before(){
        System.out.println("--------------方法执行前-----------------");
    }

    public void after(){
        System.out.println("--------------方法执行后-----------------");
    }
}
<!--    方法二:自定义类-->
    <bean id="diy" class="com.feijian.diy.DiyPointCut"/>

    <aop:config>
        <aop:aspect ref="diy">
            <!-- 切入点-->
            <aop:pointcut id="point" expression="execution(* com.feijian.service.UserServiceImpl.*(..))"/>
            <!-- 通知-->
            <aop:before method="before" pointcut-ref="point"/>
            <aop:after method="after" pointcut-ref="point"/>
        </aop:aspect>
    </aop:config>

第三,使用注解实现AOP

package com.feijian.diy;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class AnnotationPointCut {
    @Before("execution(* com.feijian.service.UserServiceImpl.*(..))")
    public void before(){
        System.out.println("==============方法执行前===================");
    }

    @After("execution(* com.feijian.service.UserServiceImpl.*(..))")
    public void after(){
        System.out.println("==============方法执行后===================");
    }

    @Around("execution(* com.feijian.service.UserServiceImpl.*(..))")
    public void around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕前");
        Object proceed = joinPoint.proceed();
        System.out.println("环绕后");
    }
}
<!--方式三-->
<bean id="annotationPointCut" class="com.feijian.diy.AnnotationPointCut"/>
<!--开启注解支持!-->
<aop:aspectj-autoproxy/>

标签:03,Spring,Study,System,aspectj,org,import,public,out
From: https://www.cnblogs.com/RUI2022/p/17231698.html

相关文章

  • SpringCloud-搭建eurekaServer
    Eureka介绍整体介绍背景:在传统应用中,组件之间的调用,通过有规范的约束的接口来实现,从而实现不同模块间良好的协作。但是被拆分成微服务后,每个微服务实例的网络地址都可......
  • Spring Bean的五个作用域
    ​ Spring支持五个作用域:singleton、prototype、request、session、globalsession1.singleton:默认作用域SpringIOC容器仅存在一个Bean实例,Bean以单例方式存在,在创建容......
  • Spring Bean的五个作用域
    ​ Spring支持五个作用域:singleton、prototype、request、session、globalsession1.singleton:默认作用域SpringIOC容器仅存在一个Bean实例,Bean以单例方式存在,在创建容......
  • Spring框架中使用了哪些设计模式及应用场景
    1、工厂模式在各种BeanFactory以及ApplicationContext创建中都有用到2、模板模式在各种BeanFactory以及ApplicationContext创建中都有用到3、代理模式SpringAOP......
  • Spring Bean的五个作用域
     Spring支持五个作用域:singleton、prototype、request、session、globalsession1.singleton:默认作用域SpringIOC容器仅存在一个Bean实例,Bean以​​单例​​方式存在,在创......
  • Spring Bean的五个作用域
     Spring支持五个作用域:singleton、prototype、request、session、globalsession1.singleton:默认作用域SpringIOC容器仅存在一个Bean实例,Bean以​​单例​​方式存在,在创......
  • IDEA社区版找不到SpringAssistant插件下载的解决办法
    进入JetBrains的官方网站搜索插件网址如下https://plugins.jetbrains.com/plugin/10229-spring-assistant/versions/stable打开IntelliJ文件夹,将下载所得内容解压缩到如下......
  • SpringCould
       1.注意springboot与SpringCould的版本兼容关系 ......
  • 启动vagrant up 报错 `await_response_state': scp: /tmp/vagrant-network-entry-eth1
      解决办法Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。Linuxdu命令用于显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘......
  • Spring Study -lesson11-动态代理扩展-2023-03-18
    一个动态代理接口类,可以作为工具接口,便于不同程序公共使用packagecom.feijian.Demo02;importcom.feijian.Demo.Rent;importcom.sun.corba.se.impl.ior.OldJIDLObje......