Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解

简介: 这篇文章是Spring5框架的AOP切面编程教程,通过XML配置方式,详细讲解了如何创建被增强类和增强类,如何在Spring配置文件中定义切入点和切面,以及如何将增强逻辑应用到具体方法上。文章通过具体的代码示例和测试结果,展示了使用XML配置实现AOP的过程,并强调了虽然注解开发更为便捷,但掌握XML配置也是非常重要的。

地址链接:
使用完全注解开发实现AOP

上一篇写了如何使用注解实现Aop切面编程、这一篇使用xml方式实现aop切面编程。通过对比、可以有效看出两者之间的方便程度

1、创建两个类,增强类和被增强类,创建方法

1.1 被增强类Dog.java

对这个类里的方法进行增强

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/10/23 14:58
 */
public class Dog {

    public void show(){
        System.out.println("我是小狗旺财。。。。");
    }
}

1.2 增强类DogProxy.java

/**
 * @author Lenovo
 * @version 1.0
 * @data 2022/10/23 14:59
 */
public class DogProxy {
    public void before(){
        System.out.println("我是提前执行的、我是一只黑色的小狗。。。。");
    }
}

2、在 spring 配置文件中创建两个类对象

<!--创建对象-->
<bean id="dog" class="com.zyz.spring5.aopxml.Dog"></bean>
<bean id="dogProxy" class="com.zyz.spring5.aopxml.DogProxy"></bean>

3、在 spring 配置文件中配置切入点

有关切入点、切面等术语的讲解。上一篇有专门的讲解。这里不在赘述。开头的链接

    <!--配置增强-->
    <aop:config >
        <!--切入点-->
        <aop:pointcut id="p" expression="execution(* com.zyz.spring5.aopxml.Dog.show(..))"/>
        <!--配置切面-->
        <aop:aspect ref="dogProxy">
            <!--增强作用在具体的方法上-->
            <aop:before method="before" pointcut-ref="p"></aop:before>
        </aop:aspect>
    </aop:config>

4、测试

    @org.junit.Test
    public void testDemo2(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        Dog dog = context.getBean("dog", Dog.class);
        dog.show();

    }

5、测试结果

在这里插入图片描述

6、后语

还是注解开发爽、实际中也是注解开发的多。你可以不用xml、但是你不能不会呀。学无止境。。。。。。

完整的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.xsd
                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--创建对象-->
    <bean id="dog" class="com.zyz.spring5.aopxml.Dog"></bean>
    <bean id="dogProxy" class="com.zyz.spring5.aopxml.DogProxy"></bean>

    <!--配置增强-->
    <aop:config >
        <!--切入点-->
        <aop:pointcut id="p" expression="execution(* com.zyz.spring5.aopxml.Dog.show(..))"/>
        <!--配置切面-->
        <aop:aspect ref="dogProxy">
            <!--增强作用在具体的方法上-->
            <aop:before method="before" pointcut-ref="p"></aop:before>
        </aop:aspect>
    </aop:config>


</beans>
相关文章
|
15天前
|
设计模式 Java 测试技术
spring复习04,静态代理动态代理,AOP
这篇文章讲解了Java代理模式的相关知识,包括静态代理和动态代理(JDK动态代理和CGLIB),以及AOP(面向切面编程)的概念和在Spring框架中的应用。文章还提供了详细的示例代码,演示了如何使用Spring AOP进行方法增强和代理对象的创建。
spring复习04,静态代理动态代理,AOP
|
1天前
ext portal+dwr+spring实现个性主页面拖拉效果的核心代码
ext portal+dwr+spring实现个性主页面拖拉效果的核心代码
16 6
|
6天前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
42 9
|
3天前
|
存储 Java 程序员
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
本文详细讲解了Spring框架中IOC容器如何存储和取出Bean对象,包括五大类注解(@Controller、@Service、@Repository、@Component、@Configuration)和方法注解@Bean的用法,以及DI(依赖注入)的三种注入方式:属性注入、构造方法注入和Setter注入,并分析了它们的优缺点。
8 0
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
|
29天前
|
Java 数据库连接 数据库
Spring基础3——AOP,事务管理
AOP简介、入门案例、工作流程、切入点表达式、环绕通知、通知获取参数或返回值或异常、事务管理
Spring基础3——AOP,事务管理
|
2月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
1天前
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
9 3
|
4月前
|
XML Java 数据格式
java创建xml文件内容
java创建xml文件内容
|
4月前
|
XML Java 数据格式
java解析xml文件内容
java解析xml文件内容
|
2天前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
16 0