接口:
public interface Knight {
void embarkOnQuest();
}
实现类:
/**
* Created by JackieLee on 2017/12/6.
*
* @author <a href="mailto:wb-lzl282164@alibaba-inc.com">李智龙</a>
* @date 2017/12/6
*/
public class BraveKnight implements Knight {
private Quest quest;
// 构造方法
public BraveKnight(Quest quest) {
this.quest = quest;
}
// 实现的接口方法
public void embarkOnQuest() {
System.out.println("embarkOnQuest开始....");
quest.embark();
System.out.println("embarkOnQuest结束....");
}
}
接口方法实现类的参数
/**
* Created by JackieLee on 2017/12/6.
*
* @author <a href="mailto:wb-lzl282164@alibaba-inc.com">李智龙</a>
* @date 2017/12/6
*/
public class SlayDragonQuest implements Quest {
public void embark() {
System.out.println("降服一条龙");
}
}
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-3.0.xsd">
<bean id="knight" class="com.jackie.impl.BraveKnight">
<constructor-arg ref="quest"/>
</bean>
<bean id="quest" class="com.jackie.impl.SlayDragonQuest"/>
<!--声明Minstrel(切点)-->
<bean id="minstrel" class="com.jackie.clazz.Minstrel"/>
<aop:config>
<aop:aspect ref="minstrel">
<!--定义切面-->
<aop:pointcut id="embark" expression="execution(* *.embarkOnQuest(..))"/>
<!--声明前置通知(执行embarkOnQuest方法前的操作)-->
<aop:before method="singBeforeQuest" pointcut-ref="embark"/>
<!--声明后置通知(执行embarkOnQuest方法后的操作)-->
<aop:after method="singAfterQuest" pointcut-ref="embark"/>
</aop:aspect>
</aop:config>
</beans>
测试:
@Test
public void kinghtTest(){
ApplicationContext context = new ClassPathXmlApplicationContext("knights.xml");
Knight knight = (Knight) context.getBean("knight");
knight.embarkOnQuest();
}
执行结果:
吟游诗人唱到:勇敢的骑士冲啊
embarkOnQuest开始....
降服一条龙
embarkOnQuest结束....
吟游诗人唱到:骑士失败而归
做切面编程aop的时候报
java.lang.NoClassDefFoundError: org/aspectj/weaver/BCException错
缺少aspectjweaver-1.8.9.jar包或者缺少maven依赖
本文参考:《Spring实战》
网友评论