Spring_16_AOP实现(1)

AOP实现(1)

   * 使用AOP的步骤

      - 第一步: 导入依赖:

               <!-- spring-web -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-webmvc</artifactId>
                  <version>5.2.0.RELEASE</version>
              </dependency>

              <!-- aspectj -->
              <dependency>
                  <groupId>org.aspectj</groupId>
                  <artifactId>aspectjweaver</artifactId>
                  <version>1.9.4</version>
              </dependency>

              <!-- spring-jdbc -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
                  <version>5.3.6</version>
             </dependency>


      - 第二步:  在applicationContext.xml文件中注册所需bean

      - 第三步: 导入AOP相关约束
 
                    <?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:aop="http://www.springframework.org/schema/aop"
                   xsi:schemaLocation="http://www.springframework.org/schema/beans
                    https://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/aop
                    https://www.springframework.org/schema/aop/spring-aop.xsd">

      - 第四步:配置AOP

           1. 切入点配置: <aop:pointcut>标签,包括:

                属性一 id:代表了一个切入点的id,作为唯一标识; 
  
                属性二 execution()括号中的内容代表一个地址,代表该切入点要切入的地点,也就是说明你要在什么方法或者其他什么作用域上面添加另一段代码。
     
             
          2.配置执行环绕 <aop:advisor> 标签

                 属性一 : dvice-ref 此处填写一个类,表示将要切入的代码

                 属性二 : pointcut-ref 此处填写上面配置的切入点id,代表要切入的位置。

   - AOP配置代码:
    ```
              <!--配置AOP-->

              <aop:aspectj-autoproxy proxy-target-class="true"/>

              <aop:config>

                  <aop:pointcut id="pointcut" expression="execution(* com.shi.service.UserServiceImpl.*(..))"/>
                  <aop:advisor advice-ref="log" pointcut-ref="pointcut"/>
                  <aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/>

              </aop:config>


 
   - 测试代码
 
     ```
            public class MyTest {
          @Test
          public void test(){
              //获取classPath
              ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

              //获取对象 动态代理 代理的是一个接口,所以这里只能写接口
              UserService userService=context.getBean("userService",UserService.class);

              //调用方法
              userService.add();
              userService.delete();
          }
      }


  
       
      




























  

posted @ 2021-05-12 11:04  失昼  阅读(54)  评论(0)    收藏  举报