`
dzgwt2004
  • 浏览: 167383 次
  • 来自: 浙江杭州
社区版块
存档分类
最新评论

学习笔记:AOP_Cuckoo's Egg(杜鹃的蛋)

阅读更多
代码(转bea)
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<!-- Bean configuration -->
	<bean id="businesslogicbean"
		class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="proxyInterfaces">
			<value>mypack.IBusinessLogic</value>
		</property>
		<property name="target">
			<ref local="beanTarget" />
		</property>
		<property name="interceptorNames">
			<list>
				<value>theAroundAdvisor</value>
			</list>
		</property>
	</bean>
	<!-- Bean Classes -->
	<bean id="beanTarget" class="mypack.BusinessLogic" />

	<!-- Advisor pointcut definition for around advice -->
	<bean id="theAroundAdvisor"
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<property name="advice">
			<ref local="theAroundAdvice" />
		</property>
		<property name="pattern">
			<value>.*</value>
		</property>
	</bean>

	<!-- Advice classes -->
	<bean id="theAroundAdvice" class="mypack.AroundAdvice" />
</beans>

IBusinessLogic .java
public interface IBusinessLogic {
	public void foo();
}

BusinessLogic .java
public class BusinessLogic implements IBusinessLogic {

	public void foo() {
		System.out.println("Inside QBusinessLogic.foo()");

	}

}

AroundAdvice.java
public class AroundAdvice implements MethodInterceptor {

	public Object invoke(MethodInvocation invocation) throws Throwable {
		System.out.println("Hello world! (by " + this.getClass().getName()
				+ ")");

		//从around通知内调用foo()方法,可以使用proceed()方法,可从invoke(..)方法的MethodInvocation参数中得到它。
		invocation.proceed();
		
//		invocation.getArguments()[0] = new Integer(20);

		System.out.println("Goodbye! (by " + this.getClass().getName() + ")");
		return null;
	}

}

MainApplication.java
public class MainApplication {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		IBusinessLogic testObject = (IBusinessLogic)ctx.getBean("businesslogicbean");
		
		testObject.foo();

	}

}
  • 描述: 顺序图
  • 大小: 14.5 KB
分享到:
评论
1 楼 ray_linn 2007-01-05  
说实话,除了Transaction和Security这两个方面, 还比较少看到些超越"Hello, world"的AOP例子, 是我孤陋寡闻,还是很说明问题?

对AOP,我只能???

相关推荐

    学习Spring笔记_AOP_Annotation实现和XML实现

    在XML配置中,我们需要定义`&lt;aop:config&gt;`、`&lt;aop:aspect&gt;`、`&lt;aop:before&gt;`、`&lt;aop:after&gt;`等元素来声明和配置切面。虽然这种方式较为繁琐,但它提供了更高的灵活性,可以更细致地控制切面的行为。 例如,一个简单...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。...通过学习和实践,你可以更好地在Spring框架中利用AOP解决实际问题。

    spring_AOP.rar_876.aop_java aop_spring_aop

    1. 静态代理(XML定义):通过Spring的`&lt;aop:config&gt;`标签来配置切面,包括定义切入点表达式和通知类型。 2. 动态代理(基于注解):使用`@Aspect`注解定义切面,`@Before`、`@After`、`@Around`等注解定义通知,...

    AOP联盟:aopalliance.jar API包

    AOP联盟:aopalliance.jar API包a set of AOP Java interface .

    aop_lib.rar

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、事务管理、性能监控等。在Java应用中,AOP...

    spring_aop_xml.rar_java aop_xml aop

    在XML中,我们使用`&lt;aop:before&gt;`, `&lt;aop:after&gt;`, `&lt;aop:around&gt;`等元素定义不同类型的通知。例如,定义一个前置通知: ```xml &lt;aop:before method="beforeAdvice" pointcut-ref="serviceMethods"/&gt; ``` 这里的...

    ssh_full.zip_AOP java_aop_backbone jsp_backbone struts_ssh

    标题中的"ssh_full.zip"可能是指一...源码可能提供了详细的实现示例,对于学习SSH框架集成和AOP编程的开发者来说是一份宝贵的资源。下载这个压缩包,开发者可以深入理解如何在实际项目中运用这些技术,提升自己的技能。

    Spring源代码解析(五):Spring_AOP获取Proxy.doc

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有业务代码的情况下,插入额外的逻辑或监控行为。本文将深入解析Spring AOP如何获取代理对象,即Proxy。 首先,我们需要理解AOP的...

    AOPDemo-master_aop_DEMO_android_

    面向切面编程(AOP)是一种编程范式,主要用于处理系统中的横切关注点,比如日志、事务管理...通过学习和理解这些示例,开发者可以更好地理解和运用AOP来提高代码的可维护性和可读性,降低复杂度,实现更加优雅的编程。

    aop_ioc_rest_redis

    标题 "aop_ioc_rest_redis" 暗示了这个主题涵盖了四个主要的IT概念:AOP(面向切面编程)、IOC(控制反转)、REST(代表性状态转移)和Redis(一个内存数据结构存储系统)。接下来,我们将深入探讨这些概念以及它们...

    8_24_SpringAOP_springaop_

    &lt;aop:aspect id="loggingAspect" ref="loggingService"&gt; &lt;aop:before method="logBefore" pointcut="execution(* com.example.service.*.*(..))"/&gt; &lt;aop:after method="logAfter" pointcut="execution(* ...

    AOP_使用spring框架进行面向切面编程

    如果希望使用XML配置,可以在Spring配置文件中定义&lt;aop:aspect&gt;元素来声明切面,以及&lt;aop:before&gt;、&lt;aop:after&gt;等子元素来定义通知。 Spring AOP的优势在于其灵活性和易于使用。通过切面,我们可以把关注点分离,...

    Spring IOC和Spring AOP_spring aop_springIOC

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。这两个概念是Spring框架的基石,极大地简化了...

    aop.zip_884AOP_java aop原理_javaaop原理

    Java AOP(面向切面编程)是软件设计中的一个重要概念,它允许程序员定义“切面”,这些切面封装了特定的、与业务逻辑不直接相关的关注点,如日志、事务...因此,深入学习和实践Java AOP是提升Java开发能力的重要一步。

    spring-aop.rar_java aop_spring aop

    【标题】"spring-aop.rar_java aop_spring aop" 涉及的主要知识点是Spring框架中的面向切面编程(AOP)以及Java基础知识。这个压缩包可能包含了一个简单的Spring AOP应用示例,同时也涵盖了Java的一些核心概念,如...

    Around_AOP_Spring.zip_aop

    AOP(Aspect Oriented Programming,面向切面编程)是软件开发中的一个重要概念,它将关注点分离,使得我们可以把核心业务逻辑与系统服务(如日志、事务管理等)进行解耦。在Java世界里,Spring框架是实现AOP最常用...

    spring_2.5_aop_lib.zip

    《Spring 2.5 AOP库的深度解析》 在软件开发中,Spring框架以其强大的功能和灵活性,已经成为Java企业级应用的首选框架之一。在Spring 2.5版本中,AOP(面向切面编程)是其核心特性之一,为开发者提供了优雅地处理...

    sisu-guice-3.1.3-no_aop.jar

    sisu-guice-3.1.3-no_aop.jar

    自己实现aop_ioc_rest1.4

    在压缩包文件 "aop_ioc_rest" 中,可能包含了博主实现这些功能的源代码,供读者学习和参考。这些代码可能分为几个部分,如AOP相关的类库、IOC容器的实现代码以及REST服务的控制器和路由定义。 通过阅读这些源码,...

Global site tag (gtag.js) - Google Analytics