﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-暴雨落葉(Gordian)-文章分类-spring</title><link>http://www.blogjava.net/gordian25/category/31783.html</link><description>與世無爭</description><language>zh-cn</language><lastBuildDate>Sat, 31 May 2008 23:07:47 GMT</lastBuildDate><pubDate>Sat, 31 May 2008 23:07:47 GMT</pubDate><ttl>60</ttl><item><title>Simple Tutorial - Aspect Oriented Programming with Spring</title><link>http://www.blogjava.net/gordian25/articles/203478.html</link><dc:creator>暴雨落葉(Gordian)</dc:creator><author>暴雨落葉(Gordian)</author><pubDate>Wed, 28 May 2008 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/gordian25/articles/203478.html</guid><wfw:comment>http://www.blogjava.net/gordian25/comments/203478.html</wfw:comment><comments>http://www.blogjava.net/gordian25/articles/203478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gordian25/comments/commentRss/203478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gordian25/services/trackbacks/203478.html</trackback:ping><description><![CDATA[<span style="color: #008000">1.add &lt;aop:aspectj-autoproxy/&gt; to spring config xml</span><br />
<br />
<span style="color: #008000">2.create a class and add @Aspect at the class</span><br />
<p>package tutorial;</p>
<p>import org.aspectj.lang.annotation.Aspect;</p>
<p>@Aspect<br />
@Component<br />
public class SystemArchitecture {</p>
<p>}<br />
<br />
<span style="color: #008000">3.declare a pointcut in the class</span></p>
<p>package tutorial;</p>
<p>import org.aspectj.lang.annotation.Aspect;<br />
import org.aspectj.lang.annotation.Pointcut;</p>
<p>@Aspect<br />
@Component<br />
public class SystemArchitecture {</p>
<p>&nbsp;@Pointcut("execution(* execute(..))")<br />
&nbsp;public void executePointcut() {<br />
&nbsp;}</p>
<p>}<br />
<br />
<span style="color: #008000">4.declare a before advise in the class and use the "executePointcut" pointcut</span></p>
<p>package tutorial;</p>
<p>import org.aspectj.lang.annotation.Aspect;<br />
import org.aspectj.lang.annotation.Before;<br />
import org.aspectj.lang.annotation.Pointcut;</p>
<p>@Aspect<br />
@Component<br />
public class SystemArchitecture {</p>
<p>&nbsp;@Pointcut("execution(* execute(..))")<br />
&nbsp;public void executePointcut() {<br />
&nbsp;}</p>
<p>&nbsp;@Before("executePointcut()")<br />
&nbsp;public void before() {<br />
&nbsp;&nbsp;System.out.println("Before");<br />
&nbsp;}</p>
<p>}<br />
</p>
<p><br />
<span style="color: #008000">5.this is already match all class when run method-name is "execute" the advise will auto run at the method before<br />
create a demo&nbsp;class</span></p>
<p>package tutorial;</p>
<p>import org.springframework.context.ApplicationContext;<br />
import org.springframework.context.support.ClassPathXmlApplicationContext;<br />
import org.springframework.stereotype.Component;</p>
<p>@Component<br />
public class Demo {</p>
<p>&nbsp;public void execute() {<br />
&nbsp;&nbsp;System.out.println("hello world");<br />
&nbsp;}</p>
<p>&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;ApplicationContext context = new ClassPathXmlApplicationContext(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"applicationContext.xml");<br />
&nbsp;&nbsp;Demo demo = (Demo) context.getBean("demo");<br />
&nbsp;&nbsp;demo.execute();<br />
&nbsp;}</p>
<p>}<br />
</p>
<p><br />
It will be output <br />
<span style="color: #ff0000">Before<br />
hello world</span><br />
<br />
the applicationContext.xml </p>
<p><span style="color: #ff0000">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;beans xmlns="http://www.springframework.org/schema/beans"<br />
&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;xmlns:context="http://www.springframework.org/schema/context"<br />
&nbsp;xmlns:aop="http://www.springframework.org/schema/aop"<br />
&nbsp;xsi:schemaLocation="http://www.springframework.org/schema/beans <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/beans/spring-beans-2.5.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/aop<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/aop/spring-aop-2.5.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/context<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/context/spring-context-2.5.xsd"&gt;</span></p>
<p><span style="color: #ff0000">&nbsp;&lt;context:annotation-config /&gt;<br />
&nbsp;&lt;context:component-scan base-package="tutorial" /&gt;<br />
&nbsp;&lt;aop:aspectj-autoproxy /&gt;</span></p>
<p><span style="color: #ff0000">&lt;/beans&gt;</span><br />
</p>
<p><br />
&nbsp;</p>
 <img src ="http://www.blogjava.net/gordian25/aggbug/203478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gordian25/" target="_blank">暴雨落葉(Gordian)</a> 2008-05-28 13:48 <a href="http://www.blogjava.net/gordian25/articles/203478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>