发表于: 2017-10-16 23:39:24
1 628
今天完成的任务:
1.学习aop在项目中使用。
在oop的编程过程中可能会产生很多重复的代码散落在程序的各个地方,会导致代码不整洁,可读性降低,并不利于重用,比如任务中用到的打印日志的功能。如果我们使用普通的oop的方法,就需要在需要打印日志的地方都加上一句loginfo()这样的话,日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系,在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。
AOP编程即面向切面编程,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。
我自己的理解就是将日志中重复需要写的代码拿出来,然后用一个方法指定在需要的地方打印日志。这样的好吃是减少了重复的代码。也更加方便的管理代码,另外在需要添加或者删除某些地方的日志的时候不需要修改源码。
查看了师兄们的日报,然后终于照猫画虎,实现了AOP的内容。
首先是获取时间的方法。需要新建一个类Advice()
public class Advice {
private static Logger logAdvice =Logger.getLogger(Advice.class);
public Object around(ProceedingJoinPoint pjp) throws Throwable{
String className =pjp.getTarget().getClass().getName();
//获取组件类名
String method =pjp.getSignature().getName();
//获取调用方法名
long begin=System.currentTimeMillis();
//获取数据库连接前的时间
String date=new SimpleDateFormat("yyyy-mm-dd:mm:ss").format(new Date());
Object object=pjp.proceed();
long end=System.currentTimeMillis();
//数据库连接后的时间
int sqlTime=(int)(end-begin);
String mesg=date +",执行了"+className +"."+method+"()";
logAdvice.warn(mesg+"数据库响应时间:"+sqlTime);
return object;
}
}
然后是配置文件
<bean id="Advice" class="comNaNteng.util.Advice"/>
<aop:config>
<aop:pointcut id="aspect" expression="execution(* comNaNteng.service.impl.*.*(..))"/>
<aop:aspect id="chen" ref="Advice">
<aop:around method="around" pointcut-ref="aspect"/>
</aop:aspect>
</aop:config>
</beans>
最后是显示的日志。
整理一下AOP的标签。
2.学习了一波idea上面下载文件和上传文件。
想记录一下:
首先在setting里面-------versioncontrol------subversion 界面上的勾全部都取消掉
然后
进去以后
输入url,再输入账号密码。就可以看到了目录。
上传文件首先
然后再点击vcs上传的图标,可以commit你的项目。
3.项目问题解决。
项目发布过了以后不知道为什么添加和编辑界面都不能正常跳转,可能是这两个方法有点问题。提示出错是add 方法在服务器上找不到。
/addInto was not found on this server.
https://ptteng.github.io/PPT/PPT-java/java-task1-interface和implement.html
明天计划:
做任务三的最后一步,编写脚本统计时间。
遇到问题:
就是项目在服务器上需要输入项目名才可以访问,这样导致了添加和修改不能使用。
收获:
学习了AOP的知识。然后项目也基本可以了。
禅道:
任务三第八天
http://task.ptteng.com/zentao/task-view-10337.html
评论