SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-009-带参数的ADVICE2
2016-03-03 21:02
761 查看
一、
情景:有个魔术师会读心术,常人一想一事物他就能读到。以魔术师为切面织入常人的内心。
二、
1.
2.
3.
4.
5.sneaky-magician.xml
6.
情景:有个魔术师会读心术,常人一想一事物他就能读到。以魔术师为切面织入常人的内心。
二、
1.
// <start id="mindreader_java" /> package com.springinaction.springidol; public interface MindReader { void interceptThoughts(String thoughts); String getThoughts(); } // <end id="mindreader_java" />
2.
// <start id="magician_java" /> package com.springinaction.springidol; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class Magician implements MindReader { private String thoughts; @Pointcut("execution(* com.springinaction.springidol." //<co id="co_parameterizedPointcut"/> + "Thinker.thinkOfSomething(String)) && args(thoughts)") public void thinking(String thoughts) { } @Before("thinking(thoughts)") //<co id="co_passInParameters"/> public void interceptThoughts(String thoughts) { System.out.println("Intercepting volunteer's thoughts : " + thoughts); this.thoughts = thoughts; } public String getThoughts() { return thoughts; } } // <end id="magician_java" />
3.
// <start id="thinker_java" /> package com.springinaction.springidol; public interface Thinker { void thinkOfSomething(String thoughts); } // <end id="thinker_java" />
4.
// <start id="volunteer_java" /> package com.springinaction.springidol; public class Volunteer implements Thinker { private String thoughts; public void thinkOfSomething(String thoughts) { this.thoughts = thoughts; } public String getThoughts() { return thoughts; } } // <end id="volunteer_java" />
5.sneaky-magician.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" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="volunteer" class="com.springinaction.springidol.Volunteer" /> <bean id="magician" class="com.springinaction.springidol.Magician" /> <!-- <start id="aspectj_autoproxy" /> --> <aop:aspectj-autoproxy /> <!-- <end id="aspectj_autoproxy" /> --> </beans>
6.
package com.springinaction.springidol; import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( { "sneaky-magician.xml" }) public class MindReaderTest { @Autowired MindReader magician; @Autowired Thinker volunteer; // <start id="testMindReader" /> @Test public void magicianShouldReadVolunteersMind() { volunteer.thinkOfSomething("Queen of Hearts"); assertEquals("Queen of Hearts", magician.getThoughts()); } // <end id="testMindReader" /> }
相关文章推荐
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-008-带参数的ADVICE
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-007-定义切面的around advice
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-006-定义切面使用xml
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-005-定义切面使用@Aspect、@EnableAspectJAutoProxy、<aop:aspectj-autoproxy>
- ASP.NET 4.0尚未在Web服务器上注册。您需要手动将Web服务器配置为使用ASP.NET,这样您的网站才能正确运行。
- raspberry-pi之DSI屏幕介绍及使用说明
- Asp.Net MVC Views页面不包含“GetEnumerator”的公共定义
- 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧
- ASP.net mvc Code First 更新数据库
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-004-使用AspectJ’s pointcut expression language定义Pointcut
- 通过 SignalR 类库,实现 ASP.NET MVC 的实时通信
- 通过 SignalR 类库,实现 ASP.NET MVC 的实时通信
- ASP.NET数据绑定GridView控件使用技巧
- asp.net中 Server.Execute() Server.transfer()与Response.Redirect()的区别
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-003-Spring对AOP支持情况的介绍
- Asp.net MVC Session过期异常的处理
- IIS是如何处理ASP.NET请求的
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-002-AOP术语解析
- SPRING IN ACTION 第4版笔记-第四章Aspect-oriented Spring-001-什么是AOP
- 在ASP.NET中如何输出日志