`

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

    spring框架手动提交事务,jdbctample

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

    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-mvc开发所有jar包【4.3.4】

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

    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 观念与...

    Spring Boot Migrator (SBM)是一种用于自动代码迁移以升级或迁移到Spring Boot的工具

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + ...它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

    开发微服务的好工具: Spring boot + Bee(高分项目).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + ...它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

    spring.net中文手册在线版

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为...

    高级Spring Boot和Spring Cloud微服务示例 Zuul上的API Swagger2

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + ...它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

Global site tag (gtag.js) - Google Analytics