仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 569|回复: 11
打印 上一主题 下一主题

[学习教程] JAVA网页设计基于AOP的日记调试仓酷云

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。断点是我们一样平常开辟最为罕见和高效的调试手腕,比拟较输出日记它赐与更多的形态信息和天真的察看角度,但断点调试是有条件和范围的.

  • 必要一个界面友爱,功效壮大的IDE,
  • 对照合适于在单机的开辟情况中举行.
企业使用开辟中,我们经常会碰到没法断点调试的困境,比方:

  • 这个非常仅在临盆情况呈现,开辟情况里没法重现;
  • 存在内部体系依附,开辟情况没法摹拟等.
这迫使我们不能不回到日记调试的老门路下去.
PrintvsLogging

复杂点的话,我们用
  1. System.out.println("debuginfomation");
复制代码
就是由于过于复杂,当必要更多信息(如线程,工夫等),或是界说输入形式和情势就必要编写更多代码,因而我们有了Log4j.
为何要基于AOP

Log4j挺好用的,只是与System.out.print一样,在代码中到处可见,但却没有营业代价.
更使人头痛的是,并不是每次我们都有充足的履历告知本人应当在那里增加这些语句,乃至于调试中不休的由于调正它们的在代码中的地位,而重复编译–打包–公布体系.这类膂力活,太没艺术感了,!
换而言之,我们会但愿:

  • 将Logging剥离于营业以外,让代码更容易于保护,
  • 无需从头编译,乃至可以运转时,可调剂输入日记的地位.
AOP完整能够匡助我们做到上述两点.
这完整不是甚么奇怪概念,这在任何先容AOP文章中,城市提到Logging是其最典范的使用场景.
以是这儿将基于Guice,会商怎样完成一个非侵进式的,且能无需从头编译便可调正Logging地位的复杂示例.
一个基于Guice的示例

我已经用过一个叫Log4E的Eclipse插件,它可依据我们事后的设置,主动的为我们在编写的代码中拔出logging的语句,如办法挪用的入口和出口:
  1. 01publicintsum(inta,intb){02if(logger.isDebugEnabled()){03logger.debug("sum-start:ais"+a+",bis"+b);04}0506intresult=a+b;0708if(logger.isDebugEnabled()){09logger.debug("sum-end:returnis"+result);10}11}
复制代码
从上例不难发明,我们在调试过程当中,常常会经由过程一个办法的进进或加入的形态(参数,前往值或非常)来剖析成绩出在甚么中央.那末,借助MethodInterceptor我们能够如许做:
Logging拦阻器
  1. 01publicclassLoggingInterceptorimplementsMethodInterceptor{0203@Override04publicObjectinvoke(MethodInvocationinvocation)throwsThrowable{05try{06Objectresult=invocation.proceed();0708//logging??,??????09log(invocation.getMethod(),invocation.getArguments(),result);1011returnresult;12}catch(Throwablethrowable){1314//logging??,?????15error(invocation.getMethod(),invocation.getArguments(),throwable);1617throwthrowable;18}19}20}
复制代码
接上去,我们必要设置这个拦阻器,并向Guice声明它.
  1. 01publicclassLoggingModuleextendsAbstractModule{0203@Override04publicvoidconfigure(){05bindInterceptor(Matchers.any(),Matchers.any(),newLoggingInterceptor());06}0708}0910publicclassMain{11publicstaticvoidmain(String[]args){12Injectorinjector=Guice.createInjector(newBusinessModule(),newLoggingModule());1314}15}
复制代码
很复杂,不是吗?如许我们的营业模块的代码完整不必编写输入日记的代码,只必要在创立Injector的时分到场LoggingModule就能够了.
等等,仿佛忘了往完成怎样设置日记输入的地位.好吧,这个实在很复杂:
设置Logging地位
  1. 01bindInterceptor(Matchers.any(),Matchers.any(),newLoggingInterceptor());
复制代码
bindInterceptor办法的第一个参数界说了拦阻器将婚配一切类,第二个参数界说了拦阻器将婚配一个类一切办法.那末,我们要做的仅仅是经由过程内部参数调剂这两个参数就能够啦.这儿就演示一个用正则表达式婚配要Logging的办法的例子:

再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-19 16:30:12 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-22 11:40:55 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
地板
发表于 2015-1-29 11:25:54 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
海妖 该用户已被删除
5#
发表于 2015-2-4 03:01:18 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
灵魂腐蚀 该用户已被删除
6#
 楼主| 发表于 2015-2-9 12:11:14 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-2-13 15:43:33 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
透明 该用户已被删除
8#
发表于 2015-3-3 23:12:50 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
小女巫 该用户已被删除
9#
发表于 2015-3-4 04:58:34 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
admin 该用户已被删除
10#
发表于 2015-3-6 21:20:13 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
若相依 该用户已被删除
11#
发表于 2015-3-13 09:20:27 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
谁可相欹 该用户已被删除
12#
发表于 2015-3-20 18:31:46 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-12 18:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表