`

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相关知识,感觉对这个问题有了更深刻的认识。所以写下来分享一下。 我们知道,Spring支持多种AOP方式,Spring自己的基于...

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

    我看这里面的都是要付费下载,我这里面有所有AOP和IOC引入的jar包,大家随便下载

    Spring AOP 拦截器 Advisor

    Spring AOP 拦截器 Advisor Spring AOP 拦截器 Advisor

    springAop+自定义注解实现权限管理

    一个简单的采用自定义注解结合SpringAop实现方法执行的权限管理,这个demo中并没有涉及到与数据库的交互和业务代码,用户权限在登陆时采用简单的手动初始化。该demo用的jdk1.7编译,Spring4.0版本,只想通过这个demo...

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

    需要使用Spring来实现一个Cache简单的解决方案,具体需求如下:使用任意一个现有开源Cache Framework,要求可以Cache系统中Service或则DAO层的get/find等方法返回结果,如果数据更新(使用Create/update/delete方法...

    java注解方式实现SpringAop编程(源码+jar包)

    java手动实现、注解方式实现两种方法实现springaop编程,包含源码+jar包+解释

    Spring Aop + 海绵宝宝 你的了解是

    面向切面编程(Aspect-Oriented Programming,AOP):Spring支持面向切面编程,允许开发者将横切关注点(如日志、事务、安全性等)从核心业务逻辑中分离出来,并以模块化的方式进行重用。这样可以提高代码的可维护性...

    java Spring代理模式AOP-IOC结合

    Spring 的 AOP 框架可以与 IoC 容器集成,提供了一种灵活的方式来实现 AOP。 六、使用 IOC 配置的方式实现 AOP Spring 的 IoC 容器可以与 AOP 框架集成,我们可以使用 IoC 配置的方式来实现 AOP。我们可以在配置...

    spring框架手动提交事务,jdbctample

    &lt;aop:aspectj-autoproxy proxy-target-class="true"&gt;&lt;/aop:aspectj-autoproxy&gt; xml中要有这句,可以解决子类类报错的问题。 或者去掉这句话,同时去掉public class AccountServiceImpl implements AccountService {...

    Java Spring代理模式AOP-IOC分析

    Java Spring代理模式AOP-IOC分析 一、代理模式概述 在软件设计中,代理模式是一种常用的设计模式。...本文对Java Spring代理模式AOP-IOC进行了分析和讨论,并提供了一个示例项目来演示如何使用Spring实现AOP和IOC。

    Spring+SpringMvc+MybatisPlus+Aop(自定义注解)动态切换数据源

    Spring+SpringMvc+MybatisPlus实现多数据源切换、利用自定义Aop注解,只需要在需要切换数据库的方法上加上注解即可实现、极大避免了代码冗余。

    SpringAOP整合Hibernate并使用事务

    从http://www.cnblogs.com/sunniest/p/4543271.html 这里摘抄的源码,具体教程可以看这个文章

    SpringSecurity.zip

    它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制...

    ioc-aop:看完spring的源码后,自己手动实现一个类似Spring的IOC和AOP功能的演示,代码注释详细,项目可以直接运行-看

    于是经过一番研究手动实现一个类似Spring的IOC和AOP功能的演示,本demo成功实现了容器的依赖注入和切面的功能,aop使用CGLIB实现。 说明 首先代码的测试运行demo见 应用程序 public static void main(String[] args...

    spring 学习总结

    Spring 提供了多种 AOP 实现方式,包括基于 Java 代码的 AOP 实现、基于 XML 的手动配置的 AOP 实现和基于 XML 的自动配置的 AOP 实现。 三、Spring 基础 在 Spring 中,Bean 是一个核心概念,表示一个可重用的...

    spring-mvc开发所有jar包【4.3.4】

    主要用于非maven项目的spring框架,这里包含了开发所需要的大部分jar包,免去手动折腾的烦恼。内容预览【https://s3.ax1x.com/2021/01/08/snWNcD.png】

    Spring面试题详细讲解

    Spring 实现这一 AOP 功能的原理就使用代理模式对类进行方法级别的切面增强,代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。从结构上来看和 Decorator 模式类似,但 Proxy 是控制,更像是一种对...

    spring-framework-3.1.2.RELEASE jar包

    spring-framework-3.1.2.RELEASE主要jar包,由于spring官网只提供3.2及以上版本,所以手动整理了一份3.1.2版本的,供日后使用

    spring课堂笔记的相关知识

    Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理 AOP编程的支持 Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能 声明式事务的支持 只需要通过配置就可以...

    开源框架 Spring Gossip

    &lt;br&gt;AOP 入门 AOP 的观念与术语都不是很直觉,可以先从代理机制(Spring 实现 AOP 的一种方式)来看看实际的例子,从而了解 AOP 的观念与各种术语。 从代理机制初探 AOP 动态代理 &lt;br&gt;AOP 观念与...

Global site tag (gtag.js) - Google Analytics