照着书写了第一个Spring AOP
客户买果浆,老板打招呼
Customer类
package AOP.BEAN;
public class Customer {
String name = null;
public Customer(String name) {
super();
// TODO Auto-generated constructor stub
this.name = name;
}
public String getName() {
return name;
}
}
KwikEMart接口
package AOP.INTERFACE;
import AOP.BEAN.Customer;
public interface KwikEMart {
public void buySquishee(Customer customer);
}
AppKwikEMart实现KwikEMart
package AOP.CLASS;
import AOP.BEAN.Customer;
import AOP.INTERFACE.KwikEMart;
public class AppKwikEMart implements KwikEMart {
public void buySquishee(Customer customer) {
// TODO Auto-generated method stub
System.out.println(customer.getName()+" buy a Squishee");
}
}
WelcomeAdvice实现MethodBeforeAdvice
package AOP.REFLECT;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
import AOP.BEAN.Customer;
public class WelcomeAdvice implements MethodBeforeAdvice {
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
// TODO Auto-generated method stub
System.out.println(arg0);
System.out.println("Hello "+((Customer)arg1[0]).getName());
}
}
bean-BuySquishee.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-2.0.xsd">
<bean id="AppKwikEMart" class="AOP.CLASS.AppKwikEMart"></bean>
<bean id="WelcomeAdvice" class="AOP.REFLECT.WelcomeAdvice"></bean>
<bean id="KwikEMart" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="AOP.INTERFACE.KwikEMart"/>
<property name="target" ref="AppKwikEMart"/>
<property name="interceptorNames">
<list>
<value>WelcomeAdvice</value>
</list>
</property>
</bean>
</beans>
main类
package AOP.MAIN;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import AOP.BEAN.Customer;
import AOP.INTERFACE.KwikEMart;
public class buySquishee {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx=new FileSystemXmlApplicationContext("AOP/XML/bean-BuySquishee.xml");
KwikEMart kem = (KwikEMart)ctx.getBean("KwikEMart");
kem.buySquishee(new Customer("pig"));
}
}
运行结果
public abstract void AOP.INTERFACE.KwikEMart.buySquishee(AOP.BEAN.Customer)
Hello pig
pig buy a Squishee
分享到:
相关推荐
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要模块,它通过提供声明式的方式来实现面向切面编程,从而简化了应用程序的开发和维护。在Spring AOP中,我们无需深入到每个...
### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)...对于希望深入了解Spring AOP原理与实践的读者来说,掌握以上概念将是开启面向方面编程之旅的第一步。
Spring AOP,全称为Spring面向切面编程,是Java EE企业级应用开发中的一个重要组成部分。它提供了一种在不改变原有代码的情况下,通过添加额外功能(如日志、事务管理)来增强程序的能力。AOP的主要目标是解决传统...
5. **单例模式(Singleton)**:Spring AOP中的`SingletonTargetSource`保证了每个目标对象只被创建一次,实现了单例模式,确保在整个应用程序中只有一个共享的实例存在,提高了资源利用效率。 6. **适配器模式...
- 第一个`*`表示任意返回类型。 - `com.sample.service.impl`是包名,`..`表示当前包及其子包。 - 第二个`*`表示所有类。 - `*`后面跟着`(..)`表示任何方法名,其中`..`表示任意参数类型。 AspectJ的`execution`...
创建自定义切面的第一步是定义一个切面类。这个类通常会包含通知(advice),即在特定连接点(join point)执行的代码。Spring支持五种不同类型的通知:前置通知(before)、后置通知(after)、返回后通知(after ...
AspectJ是Spring AOP支持的一个强大的第三方AOP框架,它提供了更强大的面向切面编程能力,包括类型级别的切面和编译时/加载时织入。`aspectjweaver.jar`是AspectJ的织入代理,负责在运行时将切面织入到应用程序的类...
Spring AOP基于代理模型,而AspectJ则是一个完整的AOP编译器,可以在编译时或运行时进行织入。Spring AOP的切入点表达式语法相对较简单,而AspectJ的切入点表达式更强大且灵活。 5. **使用步骤**: - 配置Spring ...
在"Java Web 程序设计 第12章 Spring AOP"中,你可能会学习到如何在Spring中配置和使用AOP。首先,你需要导入Spring AOP的相关依赖,如`spring-aop`和`aspectjweaver`。然后,你可以定义一个切面类,这个类包含日志...
// 第一次调用 login.login(); // 第二次调用 login.login(); // 第三次调用 ``` 5. **配置文件**: ```xml <bean id="advice" class="org.nitpro.aop.before.LoginBeforeAdvice" /> ...
Spring AOP,即Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下对程序进行功能增强的技术。本章主要探讨了Spring AOP在Spring框架内部的多种应用,...
标题 "第一个spring程序" 暗示我们即将探讨的是如何创建和运行一个基本的Spring框架应用。Spring是Java开发中最广泛使用的开源框架,它提供了一个全面的编程和配置模型,旨在简化企业级应用的开发。 在Java世界里,...
首先,我们来看第一个例子——Spring_AOP_Demo01。在这个例子中,我们可能会涉及到以下几个关键知识点: 1. **AOP核心概念**:AOP允许开发者定义“横切关注点”(cross-cutting concerns),即那些跨越多个对象的...
标题 "第九章 Spring4 AOP" 指的是Spring框架中的面向切面编程(Aspect-Oriented Programming,简称AOP)部分。AOP是Spring框架的核心特性之一,它允许开发者在不修改原有业务代码的情况下,对系统进行横切关注点的...
在本章"Spring AOP 基础1"中,我们主要探讨了Spring AOP(面向切面编程)的核心概念和实现方式。AOP是一种编程范式,它允许程序员定义"切面",这些切面封装了跨越多个对象的横切关注点,如日志、事务管理等。以下是...
Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的重要组成部分,它提供了在应用程序中实现切面编程的能力。AOP允许开发者定义“方面”,这些方面可以包含业务逻辑的各个部分,比如日志...
Spring AOP API的设计与实现是一个复杂而灵活的系统,它通过AOP代理、Advisor、Pointcut和Advice等组件,实现了对应用程序的横切关注点的解耦和封装,从而提高了代码的可维护性和复用性。理解并熟练运用这些概念和...
Spring AOP,全称为Spring面向切面编程,是Spring框架中的一个重要组成部分,它引入了“切面”的概念,使得我们可以在不修改业务代码的情况下,实现对程序行为的统一管理和控制。这种编程模式在处理系统中的横切关注...
《SpringAOP实战示例——基于Spring in action 2ed chapter4》 Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来编写更整洁、可维护的代码。在"Spring in action 2nd edition"的...