`

Spring AOP系列之一:手动方式

阅读更多
    AOP (Aspect Oriented Programming)面向切面编程,是对OOP (Object Oriented Programming)面向对象编程很好的补充,可以在不改变原始目标原型的情况下,动态地添加通用逻辑,完成业务逻辑和通用处理分离,实现解耦和利于扩展。

首先看下手动方式,没有使用AOP代理:

车辆接口:
public interface Vehicle {
	void info();
}


汽车类:
public class Car implements Vehicle {
	private String name;
	private String price;

	public void setName(String name) {
		this.name = name;
	}

	public void setPrice(String price) {
		this.price = price;
	}

	@Override
	public void info() {
		System.out.println("Car name: " + name + ", price: " + price);
	}
}


代理类:
public class CarManualProxy {
	private Car car;

	public void setCar(Car car) {
		this.car = car;
	}
	
	public void sell() {
		car.info();
		System.out.println("Give 200 maintenance coupon via manual way");
	}
}


Spring配置文件beans-manual-proxy.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"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
  default-autowire="byName">

  <bean id="car" class="com.john.spring.aop.Car">
  	<property name="name" value="Superb" />
	<property name="price" value="220000" />
  </bean>
  
  <bean id="carManualProxy" class="com.john.spring.aop.CarManualProxy">
  	<property name="car" ref="car" />
  </bean>
</beans>


测试:
public static void main(String[] args) {
	ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "beans-manual-proxy.xml" });
	CarManualProxy carProxy = (CarManualProxy) ctx.getBean("carManualProxy");
	carProxy.sell();
}


输出:
Car name: Superb, price: 220000
Give 200 maintenance coupon via manual way
分享到:
评论

相关推荐

    spring AOP的运用

    总的来说,Spring AOP提供了一种优雅的方式来处理横切关注点,使得业务代码更专注于核心功能,提高了代码的可读性和可维护性。通过源码学习和实际操作,我们可以更好地理解和利用这一强大的特性。

    spring AOP 引入jar包,spring IOC 引入Jar包

    5. **代理(Proxy)**:Spring AOP 使用动态代理技术创建对象,有两种代理方式:JDK 动态代理和 CGLIB 代理。前者适用于接口实现类,后者适用于没有接口的类。 6. **注解使用**:如 @Aspect、@Before、@After、@...

    spring AOP依赖三个jar包

    1. aopalliance-1.0.jar:这是一个非常基础的AOP库,定义了AOP的核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口为不同的AOP框架提供了统一的交互方式。Spring...

    用xml配置的方式进行SpringAOP开发

    总的来说,Spring AOP通过XML配置为我们提供了一种灵活的方式来管理横切关注点,使我们的代码更加模块化和可维护。通过定义Advisor、切点和通知,我们可以将如日志记录、事务处理等通用功能轻松地插入到业务逻辑中,...

    小马哥讲 Spring AOP 编程思想 - API 线索图.pdf

    - **自动模式**:指的是Spring AOP的自动代理创建功能,即不需要手动指定代理对象,而是通过配置自动创建。 - **AbstractAutoProxyCreator**:一个抽象类,它实现了自动创建代理对象的逻辑。 - **...

    SpringAOP依赖包

    通常,Spring框架的依赖管理会自动包含Spring AOP,但为了确保,可以手动添加如下依赖: ```xml &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-aop &lt;version&gt;5.3.18&lt;/version&gt; &lt;!-- 使用最新版本 --&gt; `...

    spring aop 附带测试实例

    在提供的压缩包文件"springAOP"中,可能包含了以下内容: - **切面类(Aspect Class)**:包含切点和通知的Java类,可能使用了`@Aspect`注解。 - **目标类(Target Class)**:被AOP代理的对象,通常包含业务逻辑。...

    springAOP-dome

    在这个名为"springAOP-dome"的实例中,我们将探讨如何利用Spring AOP实现一个简单的日志记录功能,以作为入门学习。 首先,了解AOP的基本概念是必要的。面向切面编程是一种编程范式,旨在解决程序中的横切关注点,...

    springAOP核心组件分析.pdf

    AnnotationAwareAspectJAutoProxyCreator类是Spring AOP用来创建代理对象的核心组件之一。它通过扫描类上标注了特定AOP注解的类(如@Aspect)并根据这些信息来创建代理对象。当容器中的bean需要创建时,...

    Spring AOP切面编程简介

    静态代理是实现AOP的一种基本方式,但它的局限性在于必须为每个被代理的目标类手动创建一个代理类。以下是一个简单的静态代理示例: ```java public interface Service { void execute(); } public class ...

    Spring AOP代理详细介绍

    一开始我对spring AOP还是属于一知半解的状态,这几天遇到一个问题,加上又查看了一些Spring相关知识,感觉对这个问题有了更深刻的认识。所以写下来分享一下。 我们知道,Spring支持多种AOP方式,Spring自己的基于...

    spring-aop-4.2.6.RELEASE.zip

    在IT行业中,Spring框架无疑是Java开发领域的中流砥柱,而Spring AOP则是其核心组件之一。本资料包"spring-aop-4.2.6.RELEASE.zip"正是针对Spring AOP的一个重要版本,它与"spring-framework.zip"一同构成了强大的...

    mybatis 拦截器 + spring aop切面 + spring事务+ 反射工具类

    例如,可能会有一个自定义的MyBatis拦截器用于分页查询,一个Spring AOP切面用于记录操作日志,Spring事务管理确保数据的一致性,而反射工具类可能用于动态加载配置或处理某些通用的反射任务。通过这些组件的组合,...

    通过动态代理模拟Spring AOP

    Spring框架中的AOP模块是实现这一模式的关键。本篇文章将详细探讨如何通过Java的动态代理机制来模拟Spring AOP的核心概念。 首先,让我们了解什么是动态代理。在Java中,动态代理主要由`java.lang.reflect.Proxy`类...

    Spring Aop操作的相关的jar包

    在Spring AOP中,切面通常由一个或多个通知(advice)和一个切入点(pointcut)定义组成。 2. **通知(Advice)**:通知是在特定连接点执行的代码,它是切面实际行为的实现。Spring AOP支持五种类型的通知: - ...

    SpringAop两种配置demo

    Spring AOP,全称Spring面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改原有代码的情况下,对程序进行功能增强的技术。在实际开发中,我们经常使用AOP来处理如日志记录、事务管理、权限校验...

    8_24_SpringAOP_springaop_

    总的来说,Spring AOP提供了一种优雅的方式,让我们可以将关注点分离,专注于业务逻辑的实现,而将诸如日志、事务等通用功能作为切面进行统一管理。通过XML配置或注解方式,我们可以轻松地定义、应用和管理这些切面...

    Spring AOP 拦截器 Advisor

    Spring AOP 拦截器 Advisor 是 Spring 框架中的一个重要概念,它与切面编程密切相关,用于实现细粒度的控制和增强应用程序的行为。在 Spring AOP 中,Advisor 是一个组合了通知(Advice)和切入点(Pointcut)的对象...

    Spring AOP+ehCache简单缓存系统解决方案

    首先,Spring AOP是Spring框架的一个核心特性,它允许开发者在不修改源代码的情况下,对应用程序的特定部分进行横切关注点的添加,如日志记录、事务管理或性能监控。AOP通过定义切面(Aspect)和通知(Advice)来...

Global site tag (gtag.js) - Google Analytics