HelloWorld实现的基本步骤如下:
1.建立接口
package aop;
public interface WebSite
{
public void showContent();
}
2.建立接口的实现类
package aop;
public class ArvinRongHomePage implements WebSite
{
@Override
public void showContent()
{
System.out.println("Arvin Rong's Space.");
}
}
3.建立main方法类
package aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AopMain
{
/**
* @author ArvinRong, 2012-8-31
*/
public static void main(String[] args)
{
String configString = "aop/spring-config.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(configString);
WebSite webSite = context.getBean("website",WebSite.class);
webSite.showContent();
}
}
4.建立Spring配置文件
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="website" class="aop.ArvinRongHomePage" />
</beans>
测试运行,通过后
Arvin Rong's Space.
5.建立在接口实现类方法前需要执行的代码类(这种类在Spring中叫做Advice)
package aop;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class BeforeContentAdvice implements MethodBeforeAdvice
{
@Override
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable
{
System.out.println("Welcome to my page.");
}
}
6.修改Spring配置文件
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="websiteTarget" class="aop.ArvinRongHomePage" /><!--id由website更改为websiteTarget-->
<bean id="websiteAdvice" class="aop.BeforeContentAdvice" />
<bean id="website" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="aop.WebSite" />
<property name="interceptorNames">
<list>
<value>websiteAdvice</value>
</list>
</property>
<property name="target" ref="websiteTarget" />
</bean>
</beans>
测试运行,查看结果
Welcome to my page.
Arvin Rong's Space.