统计 其实在 mybatis print point pointcut myba pan
今天看工作看代码突然有了以下设想:
- /**
- * Created by zq on 2017/5/25.
- * 抽象类
- */
- public abstract class AbstractC {public void C(){
- D();
- System.out.println("C_1");
- E();
- }
- public abstract void D();
- // {
- // System.out.println("C_1");
- // }
- public abstract void E();
- // {
- // System.out.println("C_2");
- // }
- }
关键点事阴影部分的方法 c();
如下代码利用抽象类的抽象方法的实现包装的思想:
- /**
- * Created by zq on 2017/5/25.* 利用抽象类的抽象方法实现包装的思想
- */
- public class AbstractWay {
- public static void main(String [] args){
- new AbstractC() {
- @Override
- public void D() {
- System.out.println("C_2");
- }
- @Override
- public void E() {
- System.out.println("C_3");
- }
- }.C();
- }
- }
如上,其实在诸如 spring,mybatis 框架中,都有这种包装的思想,在 spring 中,这种思想被定义为 aop(面向切面编程),比如 spring 注解的实现(如:@[email protected]),将代码中 System.out.println("C_1"); 替换成 "反射" 的相关方法,即可达到在执行某方法前后,执行预先设定的业务逻辑,比如访问统计,日志记录等.
关于 Java 实现抽象类的抽象方法的特性的利用 --- 面向切面
来源: http://www.bubuko.com/infodetail-2088427.html