前两篇都是简单介绍了相关的入门级别的概念,编程最重要的是需要动手,只知道概念是没有用的,需要动手,需要动手,需要动手!!!下面我就来简单介绍下AOP是如何使用的。
AOP这种思想在Spring里面有,在AspectJ里面也有,当然在Jboss里面也存在,基本上Spring和AspectJ代表了AOP的两种配置方式,即注解方式和XML配置方式。
一.注解的配置方式
注解的配置方式可以分为以下步骤:
1.书写核心业务逻辑代码;
2.添加切面和切入点以及通知这三个的注解;
3.配置XML文件。
示例代码:
先定义一个基础类:
publicclassReferenceAOP {
publicintreferenceTimes;
public Stringname;
publicintgetReferenceTimes() {
returnreferenceTimes;
}
publicvoidsetReferenceTimes(int referenceTimes) {
this.referenceTimes =referenceTimes;
}
public StringgetName(){
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
}
定义一个Dao接口:
publicinterfaceReferenceAOPDao {
publicvoidOutputReference();
}
定义一个实现类:
publicclassReferenceAOPDaoImplimplements ReferenceAOPDao {
@Override
publicvoid OutputReference() {
// TODO Auto-generated method stub
System.out.println("Test outputReference");
}
}
定义一个操作类:
publicclassReferenceAOPService {
private ReferenceAOPDaoreDao;
public ReferenceAOPDao getReDao() {
returnreDao;
}
publicvoidsetReDao(ReferenceAOPDaoreDao) {
this.reDao = reDao;
}
publicvoidoutPut(ReferenceAOPDao reDao) {
reDao.OutputReference();
}
}
测试代码:
public class TestAOPReference {
public void main(String args[]) throws Exception {
ClassPathXmlApplicationContext ctx = newClassPathXmlApplicationContext("applicationContext.xml");
ReferenceAOPService service = (ReferenceAOPService)ctx.getBean("referenceAOPService");
System.out.println(service.getClass());
service.outPut(new ReferenceAOPDao());
System.out.println("end");
}
XML配置文件:
<context:annotation-config/>
<context:component-scanbase-package="TestAOP"/> <!-- 自动扫描相关的类-->
<aop:aspectj-autoproxy/>
<beanid="referenceAOPService"class="TestAOP.ReferenceAOPService">
<propertyname="referenceAOPDao">
<refbean="referenceAOPDao"/>
</property>
</bean>
<beanid="referenceAOPDao"class="TestAOP.ReferenceAOPDaoImpl">
<propertyname="sessionFactory">
<refbean="sessionFactory"/>
</property>
</bean>
在这个配置文件里面一个很重要的点是:Spring是否支持注解的AOP是由该配置文件控制的,也就是<aop:aspectj-autoproxy/> ,如果在配置文件中声明了这一配置的时候,Spring就会支持注解的AOP。
二.XML的配置方式:在注解的配置方式的基础上增加一个如下的配置:其他没什么变化,XML配置方式的配置可以分为以下步骤:
1.配置指定的切面。
2.配置指定的切点;
3.配置指定的通知。
<aop:config>
<aop:pointcutexpression="execution(public* TestAOP..*.add(..))"
id="servicePointcut"/>
<aop:aspectid="logAspect"ref="AOPUtil">
<aop:before method="beforeMethod" pointcut-ref="servicePointcut"/>
</aop:aspect>
</aop:config>
参考博客:http://www.cnblogs.com/flowwind/p/4782606.html