Spring**

    1. 大名鼎鼎的Spring框架,有人曾说2005年一片叫春之声,指的就是该框架。<br /> Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》一书。Rod Johnson认为,J2ee里面的那一套//尤其是ejb,太重了,对于单机的系统来说,没有必要使用那么复杂的东西 。于是就开始设计并引导Spring小组开发出这样一个构架,不能不说他是个天才,因为的的确确不是所有的系统都是跨多服务器的 。没有必要把一个简单的系统设计得那么复杂//天才的那几个共性又体现出来了,Spring从诞生之日起就是针对EJB的,力争在不少应用上取代EJB,而它也确实达到了这个目的 ,现在包括WebLogic等主流应用服务器还有主流IDE都开始逐渐接受该框架,并提供相应支持 ,提到Spring就不能不说**控制反转Ioc//Inversion of Control和依赖注射DI//Dependency Injection**** 。**<br />什么叫控制反转呢?套用好莱坞的一句名言就是:**你呆着别动,到时我会找你**。什么意思呢?就好比一个皇帝和太监 ,有一天皇帝想宠幸某个美女,于是跟太监说,今夜我要宠幸美女 ,皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女,其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上,这就是控制反转。而把美女送到皇帝的寝宫里面去就是注射 ,太监就是是框架里面的注射控制器类**BeanFactory**,负责找到美女并送到龙床上去。整个后宫可以看成是Spring框架,美女就是**Spring**控制下的**JavaBean****。**而传统的模式就是一个饥渴男去找小姐出台 ,找领班,帮助给介绍一个云云,于是领班就开始给他张罗 ,介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 。这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐,这就是**lookup(****)**方法,领班手中的小姐名录就是**JNDI//Java Naming and Directory Interface****。**小姐就是EJB,饥渴男是客户端,青楼是EJB容器,看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去,而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了,而不是皇帝,必要时候由太监给注射进去就可以了 。看到Spring的美妙了吧**,****Spring还提供了与多个主流框架的支持,可以和其它开源框架集成 ****。**

    设计模式
    POJO** //Plain Old Java Object 就是传统的Java对象,也就是一个JavaBean,由虚拟机来掌握其生死 。常用的两个管理构架/规范是Spring和EJB容器**命名由来是某人//名字我忘了,觉得我们使用了太多的规范,以至于我们都忘记了纯粹的java对象,以至于我们都忽略了它的存在,所以叫了这么一个名字 ,以唤醒人们的记忆,这个意义上来说EJB其实不能算是POJO,毕竟遵循了一堆的接口,但是不管怎样,接口归接口,还是没有继承类 ,没有被强加什么。//遵循可以写空方法假遵循,所以说还是POJO也对。但是由于这种东西缺乏管理,不象Servlet有专门的容器管理并继承了一定的类。而没有管理的对象在虚拟机中是很危险的,因为垃圾回收机制各个虚拟机不同。而且也不怎样,极有可能长时间不回收,这样在企业级的应用中呢 ,就有可能造成内存大量被占用从而死机,毫无疑问,这种机制需要优化 。这种优化就是通过EJB容器或者Spring构架来实现这么做还有一个好处就是迫使程序员对每一个类做封装强迫他做管理,以达到防止内存泄露的目的,内存泄露最经常出现的错误就是引用未释放,引用最典型体现在new这个关键字上,new得越多引用得越多,随着时间地增长,有可能导致循环,不停new new new new new…..其中哪怕只要有一个new处理不当,虚拟机无法回收内存,那就极有可能完蛋,而且这种小bug越是在大的项目越是难以找到,有可能因为一个人而影响整个项目组,所以不妨记住我的一条经验, 好的系统框架不应该在业务逻辑流程中出现new关键字**。现在不理解也无所谓,将来有一天会明白的 。
    SOA** **面向服务的构架 ,不说太多,这个属于上上层建筑 。不过不妨记住我的一句话,可以帮助理解这个概念 ,面向什么就是对什么做封装 ,面向对象就是对对象做封装 ,面向服务类似,剩下的靠悟性 。

    反射** 1.4新增功能,非常强大 通过反射,程序可以解析出类本身的属性也就是变量//注意这里说的属性不是.net里面的属性,我不喜欢微软造的新名词,乱。还有行为也就是方法,然后通过invoke()**方法调用该方法,甚至可以新增对象等,java首创,本是其它语言所没有的。后来被微软抄了去,利用该功能,开源框架广泛受益并大量采用,近乎疯狂地使用,具体就不说了,最后要指出的是,有一种说法是利用反射会降低效率 。在早期的时候的确是,现在不会了,放心使用 。

    容器** **5.0以后的版本在J2SE中都出现了容器,各位甚至可以自己尝试用标准库去使用容器 。

    推荐网站

    www.javaeye.com //java视线论坛,Hibernate国内的权威
    dev2dev.bea.com //bea的dev2dev社区,用WebLogic首选的好去处
    www-128.ibm.com/developerworks //ibm developer works社区,ibm产品的老家
    www.jdon.com //j道,Jboss国内相对讨论会多一点的地方,有自己的框架
    www.matrix.org.cn //matrix,有自己的框架,很清新的论坛
    jcp.org //JCP,前面说到过了
    sourceforge.net //开源的东西几乎这里都可以找到,除java外还有游戏共享等
    saloon.javaranch.com //我常去,人气不错
    www.apache.org //阿帕奇老家
    www.jboss.com //Jboss和Hibernate老家
    www.springframework.org //Spring老家
    www.wiki.org //非常好的百科站点,可惜国内被封,创始人加入了Eclipse zone
    www.google.com //你要的这里有,不信?输入关键字再按一下那个靠左的白色按钮试试


    书籍

    《Thinking in Java》 //实话说,一般,尤其是翻译后的版本,原版还行
    《Java教程》 //电子工业出版社出版的那本,上下册,很厚,但翻译得不错
    《21天学通Java》 //入门极好,但是《21天学通j2ee》极烂,不要买
    《Mastering EJB》 //翻译过的书质量我不清楚,估计不怎样,请看原版书籍
    《精通Hibernate》 //看清楚作者,孙卫琴,其它人的别买
    其它的可以不用了,网络上的远比书上来得多,来得好,虽然也来得杂


    最后的建议** **

    一,不要做一个浮躁的人
    二,学好英语,很重要
    三,阅读源代码和文档
    四,共享源代码,不要做一个功利的人
    五,热爱Java