仓酷云

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

[学习教程] JAVA编程:Spring AOP框架

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

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

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

x
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。AOP正在成为软件开辟的下一个圣杯。利用AOP,你能够将处置aspect的代码注进主程序,一般主程序的次要目标其实不在于处置这些aspect。AOP能够避免代码凌乱。为了了解AOP怎样做到这点,思索一下记日记的事情。日记自己不太多是你开辟的主程序的次要义务。假如能将“不成见的”、通用的日记代码注进主程序中,那该多好啊。AOP能够匡助你做到。Springframework是很有出路的AOP手艺。作为一种非侵犯性的,轻型的AOPframework,你无需利用预编译器或其他的元标签,即可以在Java程序中利用它。这意味着开辟团队里只需一人要凑合AOPframework,其别人仍是象平常一样编程。AOP是良多直觉难以了解的术语的本源。侥幸的是,你只需了解三个观点,就能够编写AOP模块。这三个观点是:advice,pointcut和advisor。advice是你想向其余程序外部分歧的中央注进的代码。pointcut界说了必要注进advice的地位,一般是某个特定的类的一个public办法。advisor是pointcut和advice的拆卸器,是将advice注进主程序中预界说地位的代码。既然我们晓得了必要利用advisor向次要代码中注进“不成见的”advice,让我们完成一个SpringAOP的例子。在这个例子中,我们将完成一个beforeadvice,这意味着advice的代码在被挪用的public办法入手下手前被实行。以下是这个beforeadvice的完成代码:代码:packagecom.company.springaop.test;importjava.lang.reflect.Method;importorg.springframework.aop.MethodBeforeAdvice;publicclassTestBeforeAdviceimplementsMethodBeforeAdvice{publicvoidbefore(Methodm,Object[]args,Objecttarget)throwsThrowable{System.out.println("Helloworld!(by"+this.getClass().getName()+")");}}接口MethodBeforeAdvice只要一个办法before必要完成,它界说了advice的完成。before办法共用三个参数,它们供应了相称丰厚的信息。参数Methodm是advice入手下手后实行的办法。办法称号能够用作判别是不是实行代码的前提。Object[]args是传给被挪用的public办法的参数数组。当必要记日记时,参数args和被实行办法的称号,都长短常有效的信息。你也能够改动传给m的参数,但要当心利用这个功效;编写最后主程序的程序员其实不晓得主程序大概会和传进参数的产生抵触。Objecttarget是实行办法m对象的援用。鄙人面的BeanImpl类中,每一个public办法挪用前,城市实行advice:代码:packagecom.company.springaop.test;publicclassBeanImplimplementsBean{publicvoidtheMethod(){System.out.println(this.getClass().getName()+"."+newException().getStackTrace()[0].getMethodName()+"()"+"saysHELLO!");}}类BeanImpl完成了上面的接口Bean:代码:packagecom.company.springaop.test;publicinterfaceBean{publicvoidtheMethod();}固然不是必需利用接口,但面向接口而不是面向完成编程是优秀的编程理论,Spring也勉励如许做。pointcut和advice经由过程设置文件来完成,因而,接上去你只需编写主办法的Java代码:代码:packagecom.company.springaop.test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.FileSystemXmlApplicationContext;publicclassMain{publicstaticvoidmain(String[]args){//ReadtheconfigurationfileApplicationContextctx=newFileSystemXmlApplicationContext("springconfig.xml");//InstantiateanobjectBeanx=(Bean)ctx.getBean("bean");//Executethepublicmethodofthebean(thetest)x.theMethod();}}我们从读进和处置设置文件入手下手,接上去即刻要创立它。这个设置文件将作为粘合程序分歧部分的“胶水”。读进和处置设置文件后,我们会失掉一个创立工场ctx。任何一个Spring办理的对象都必需经由过程这个工场来创立。对象经由过程工场创立后即可一般利用。仅仅用设置文件即可把程序的每部分组装起来。代码:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd"><beans><!--CONFIG--><beanid="bean"class="org.springframework.aop.framework.ProxyFactoryBean"><propertyname="proxyInterfaces"><value>com.company.springaop.test.Bean</value></property><propertyname="target"><reflocal="beanTarget"/></property><propertyname="interceptorNames"><list><value>theAdvisor</value></list></property></bean><!--CLASS--><beanid="beanTarget"class="com.company.springaop.test.BeanImpl"/><!--ADVISOR--><!--Note:Anadvisorassemblespointcutandadvice--><beanid="theAdvisor"class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"><propertyname="advice"><reflocal="theBeforeAdvice"/></property><propertyname="pattern"><value>com.company.springaop.test.Bean.theMethod</value></property></bean><!--ADVICE--><beanid="theBeforeAdvice"class="com.company.springaop.test.TestBeforeAdvice"/></beans>四个bean界说的序次其实不主要。我们如今有了一个advice,一个包括了正则表达式pointcut的advisor,一个主程序类和一个设置好的接口,经由过程工场ctx,这个接口前往本人自己完成的一个援用。BeanImpl和TestBeforeAdvice都是间接设置。我们用一个独一的ID创立一个bean元素,并指定了一个完成类。这就是全体的事情。advisor经由过程Springframework供应的一个RegexMethodPointcutAdvisor类来完成。我们用advisor的一个属性来指定它所需的advice-bean。第二个属性则用正则表达式界说了pointcut,确保优秀的功能和易读性。最初设置的是bean,它能够经由过程一个工场来创立。bean的界说看起来比实践上要庞大。bean是ProxyFactoryBean的一个完成,它是Springframework的一部分。这个bean的举动经由过程一下的三个属性来界说:属性proxyInterface界说了接口类。属性target指向当地设置的一个bean,这个bean前往一个接口的完成。属性interceptorNames是独一同意界说一个值列表的属性。这个列表包括一切必要在beanTarget上实行的advisor。注重,advisor列表的序次长短常主要的。Spring工具固然你能够手工修正Ant构建剧本,但利用SpringUI(译注:SpringUI如今是Springframework的一部分,并更名为spring-ide),利用SpringAOP变得很复杂,只需点点鼠标便可。你能够把SpringUI安装成Eclipse的一个plug-in。然后,你只需在你的project上右击鼠标,并选择“addSpringProjectNature”。在project属性中,你能够在“SpringProject”下增加Spring设置文件。在编译前把上面的类库到场project:aopalliance.jar,commons-logging.jar,jakarta-oro-2.0.7.jar和spring.jar。运转程序时你会看到上面的信息:...(logginginformation)Helloworld!(bycom.company.springaop.test.TestBeforeAdvice)com.company.springaop.test.BeanImpl.theMethod()saysHELLO!长处和弱点Spring比起其他的framework更有上风,由于除AOP之外,它供应了更多其余功效。作为一个轻型framework,它在J2EE分歧的部分都能够发扬感化。因而,即便不想利用SpringAOP,你大概仍是想利用Spring。另外一个长处是,Spring其实不请求开辟团队一切的职员城市用它。进修Spring应当从Springreference的第一页入手下手。读了本文后,你应当能够更好地舆解Springreference了。Spring独一的弱点是缺少更多的文档,但它的mailinglist是个很好的增补,并且会不休地呈现更多的文档。
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-21 16:30:25 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-30 21:09:00 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
精灵巫婆 该用户已被删除
地板
发表于 2015-1-31 18:51:18 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
乐观 该用户已被删除
5#
发表于 2015-2-2 11:29:07 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
admin 该用户已被删除
6#
发表于 2015-2-7 13:28:03 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
飘灵儿 该用户已被删除
7#
发表于 2015-2-22 00:23:18 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
透明 该用户已被删除
8#
发表于 2015-3-4 03:55:34 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
若天明 该用户已被删除
9#
发表于 2015-3-5 02:04:28 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
小妖女 该用户已被删除
10#
发表于 2015-3-10 22:34:19 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
爱飞 该用户已被删除
11#
发表于 2015-3-16 21:07:46 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
海妖 该用户已被删除
12#
发表于 2015-3-17 11:43:51 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
金色的骷髅 该用户已被删除
13#
发表于 2015-3-24 09:10:31 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
若相依 该用户已被删除
14#
发表于 2015-4-6 20:32:29 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
灵魂腐蚀 该用户已被删除
15#
发表于 2015-4-18 06:53:45 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
柔情似水 该用户已被删除
16#
发表于 2015-4-26 09:18:12 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
蒙在股里 该用户已被删除
17#
发表于 2015-4-29 13:40:47 | 只看该作者
是一种突破用户端机器环境和CPU
再见西城 该用户已被删除
18#
发表于 2015-5-1 08:09:28 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
不帅 该用户已被删除
19#
发表于 2015-5-3 14:52:28 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
简单生活 该用户已被删除
20#
 楼主| 发表于 2015-7-6 06:59:59 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-1 20:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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