zoukankan      html  css  js  c++  java
  • spring 使用XML配置开发Spring AOP

       XML方式开发AOP与注解开发原理是相同的,所以这里主要介绍一些用法即可。这里需要在XML中引入AOP的命名空间,所以先来了解一下AOP可配置的元素


      代码清单:切面类
    package com.ssm.chapter11.xml.aspect;
    
    public class XmlAspect {
    
        public void before() {
            System.out.println("before ......");
        }
    
        public void after() {
            System.out.println("after ......");
        }
    
        public void afterThrowing() {
            System.out.println("after-throwing ......");
        }
    
        public void afterReturning() {
            System.out.println("after-returning ......");
        }
    
    }

      没有任何的注解,这就意味着需要我们使用XML去向Spring IoC容器描述它们。



      代码清单:spring-cfg4.xml
    <?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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
    
        <bean id="xmlAspect" class="com.ssm.chapter11.xml.aspect.XmlAspect"/>
        <bean id="roleService" class="com.ssm.chapter11.xml.service.impl.RoleServiceImpl"/>
    
        <aop:config>
            <!-- 引用xmlAspect作为切面 -->
            <aop:aspect ref="xmlAspect">
                <!-- 定义切点 -->
                <aop:pointcut id="printRole" expression="execution(* com.ssm.chapter11.xml.service.impl.RoleServiceImpl.printRole(..))"/>
                <!-- 定义通知,引入切点 -->
                <aop:before method="before" pointcut-ref="printRole"/>
                <aop:after method="after" pointcut-ref="printRole"/>
                <aop:after-throwing method="afterThrowing" pointcut-ref="printRole"/>
                <aop:after-returning method="afterReturning" pointcut-ref="printRole"/>
    
                <aop:around method="around" pointcut-ref="printRole"/>
            </aop:aspect>
        </aop:config>
    
    
    </beans>


      代码清单:测试类
    public class Main {
    
        public static void main(String[] args) {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("ssm/chapter11/spring-cfg4.xml");
            RoleService roleService = ctx.getBean(RoleService.class);
            Role role = new Role();
            role.setId(1L);
            role.setRoleName("role_name_1");
            role.setNote("note_1");
            roleService.printRole(role);
        }
    
    }


  • 相关阅读:
    集成学习值Adaboost算法原理和代码小结(转载)
    集成学习原理小结(转载)
    2019阿里校招测评题,光明小学完全图最短路径问题(python实现)
    第八节、图片分割之GrabCut算法、分水岭算法
    Scala2.11.8 spark2.3.1 mongodb connector 2.3.0
    spark 实现动态日期读取
    Idea 201601注册码
    linux下的crontab服务
    spark MySQL jar 包
    scala 日期格式转换
  • 原文地址:https://www.cnblogs.com/ooo0/p/11018752.html
Copyright © 2011-2022 走看看