发表于: 2017-10-19 23:24:46

2 751


今日完成:

  因为要使用到aop,踩了至少3个以上的雷点

 

首先关于对象中存在静态方法,无法被代理的原因.

①因为aop存在两种代理方式,动态代理的条件为代理方法至少实现一个接口,接口是不允许有静态方法的,所以更不用说接口的实现类里有静态方法了

②除去动态代理,那么aop就是采用的cglib代理,而cglib代理生成的代理类继承自被代理类/目标类,请求时,执行自己织入的增强,然后再执行目标方法,因而使用继承方式创建代理类不能代理任何final方法和类,以及静态方法

 

OK那么第二个方面关于aop的环绕通知

如果代理的方法存在返回值,那么一定要写成

如果直接调用,返回值为空值.

这里为了统计访问db和controller的时间,增加切面并配置

这里要注意的aop的注解开启,和扫描注入得放在spring-mvc配置文件中,否则无法切入



编写一键上传部署脚本

 

#!/bin/sh

cd /usr/resin/webapps

rm -r mydemo

rm -d mydemo

rm mydemo.war

rz

cd ../bin

./resin.sh restart

这里写的就比较简单,因为上传时一直用的是mydemo名称的Jar包,进入webapps目录后,为了防止有空的mydemo文件夹,在递归删除后再进行空文件夹删除,再删除war包,之后进行上传,重新启动resin服务器.

再看上传的Log日志文件记录

测试成功,提交task3






来到task4

拿到页面后先变为jsp页面,但是访问时css样式及图片全部加载失败,这里要注意在spring-mvc配置文件中开启一下标签,因为我们springmvc是拦截所有资源

这里静态资源也被拦截了,所以要启用默认servlet防止mvc拦截静态资源

<!--启用默认servleet防止mvc拦截静态资源!-->
<mvc:default-servlet-handler/>


将文件引入web项目中,因为这里担心引用的css和图片路径的问题就没有对其进行抽取整理,将html后缀改为jsp,后进行测试



页面引入和相互之间的跳转已经没问题.今天就先到这了


明日计划:学习tiles ,因为框架写好已经把项目套上去了,争取完成task4


问题:思考题,aop中动态代理得实现最少一个接口,静态方法不能存在于接口,而cglib不代理静态方法,想想怎么用aop实现静态方法的代理


收获:aop底层了解了不少,手写了动态代理及cglib代理的方式.

cglib代理

动态代理


返回列表 返回列表
评论

    分享到