java框架

来源:互联网 发布:淘宝商家提现手续费 编辑:程序博客网 时间:2024/06/04 19:33

1.   使用反射可以根据配置文件来生成对象实例,配置文件就是描述众多的.class文件关系的地图,但是只有死的数据是不可以的,计算机编程的世界是数据和程序,数据都是被程序来管理的,这是无论多么复杂的程序的总的脉络,永远不变的,编程就是一直在数据和程序之间来回的转换。

2.   Web.xml这个数据是tomcat这个程序来维护的,Hibernate.xml这个程序是由Hibernate这个程序来维护的,ApplicationContext.xml这个数据是由Spring这个框架来维护的,这是总的脉络。

3.   但是无论是SSH中的那个程序都是需要在tomcat这个结构里访问的,所以需要对web.xml注册自己的程序。即使如同web项目它在总的构架上也是Dom树相似的结构,程序运行的时候也是在这个树的根节点开始,逐渐往下一个级别来访问的。

4.   所谓的开发插件,就是让插件这个程序添加到Dom树的新节点上和this.Append(),是一个道理的,JS操作的原理在Web应用之中也是通用的,都是一个回事。Dom树中插入节点需要先找到父亲节点,同样的在web程序的开发中也是需要找到父亲节点,web.xml就是项目的父亲节点。

5.   程序变得复杂就是因为他的sibling变的丰富了。如果JavaEE没有拓展子节点,是很难扩展开的。

6.   Spring的依赖注入就是把所有的关系都转化为数据结构的表示方式,本质上就是通过Spring实现html标签式的业务管理。并且,web.xml里面的servelt在tomcat里面运行的时候就是依赖注入控制反转的。Html的开发方式和JS的操作方式是非常简单也是所有的web开发时候的模板,spring的配置最终实现的就是这个方式。Spring的控制反转如同Flex里面页面的空间用xml来实现而页面的写作用as来实现在本质上是一样的。Spring使软件的开发编程了页面部分和内部逻辑部分的分离,写Java代码的时候就不是纯粹的写代码了而是和配置相结合的方式,这种方式虽然在使用的时候会经过一次转换,但是却极大的减少了硬编码,为程序的健壮可拓展性提供了强有力的根基。从哲学上感觉世界上很多的事情都是在变化的,但是在变的过程中还是有一个不变的,我们不能消灭这个变,但是我们却可以让这个变在我们可以控制的基础上。我们这个论点是从程序员的角度来说的,有一句话叫做屁股决定大脑,事实上也正是如此。对于一次特定的应用来说,一旦写好了也基本上就是不变了。没有必要再搞得太复杂,但是一旦要改变的时候,程序员的负担是非常中的。所以框架解放的是程序员自己,人生的路上,我们在某条道路上探索,都是带着枷锁的,所以我们自己的经验我们的工具解放的只是我们自己。自助者天助,如果自己不主动的去解放自己,是没有人能解放自己的。因为大家的大脑都受限于自己屁股的位置。无论你是否愿意,你站在地球上就只能看到自己视野里的东西,一般的人都不会伟大到可以解放所有的人,至少只有解放了自己才能解放别人,如果自己都是带着枷锁在跳舞,又有什么能力去解放别人哪?如果你忽略了你屁股的位置去谈拯救别人拯救全人类,如果你坚信这是你的信念,那么问题肯定就这样来了,世界上没有全能的救世主,除了你自己拯救自己别人什么也做不了。救世主只能视图让你从迷失中清醒过来,当你清醒了以后,当你看清了你的位置,看清楚了你的屁股在哪里,清楚了你的前世今生你就能清楚的知道应该怎么做了。佛祖说他从没有说过佛法,可是佛祖明明说了那么多的法,为什么还要将自己没有讲过法哪?还要说谁说我讲过法就是诽谤我,因为佛祖不想世人执着,世人执着的已经太多了。大家已经够迷失的了何必在增加人的迷失哪?这肯定不是佛祖想要做的。佛祖知道每个人都有自己的三世因果,所以每个人的业力是不同的,既然大家的根器不同,那么怎么会有统一的法可以说那,如同在spring开发的时候很多人都没有织点,怎么可能让切面切到所有的人哪?而佛祖既然是面向众生的,就不会再切入了。佛祖当时的说法只是针对听着本人的根器来讲的,也就是佛祖当时的切面只是切的当时的那些人当时的那个时间,所以对于不是那些人的人怎么可能有效果哪?既然佛祖不能切中所有的人,又何必让大家执着那次的说法哪?

7.   Spring配置的时候ref就是链接的作用,我们从内存的角度发现使用了ref就是可以保证单例模式可以保证值调用一次。这种管理模式可以从宁一种层面直接反应内存中所有的引用,我们可以脱离业务逻辑的束缚,只需要找是否有符合要求的实例而不必和业务逻辑耦合在一起,这样我们就可以不浪费系统的资源了。如果我们陷在业务逻辑中的话,我们就会根据业务逻辑的指引来决定是否有可以用的引用,而实际上引用和业务逻辑是解耦的。

8.   配置信息的时候尽量用xml而不是Annocation因为这样才是真正的数据和程序的分离。

9.   Spring中需要配置业务的代理,代理就是因为专业,显示中的代理因为有很多的同类产品所以有利于产品的销售,同样的也是在系统中用代理就可以实现相似的功能统一的管理,代理也是一种规模化的体现,规模化的好处就是可以提高效率,减少资源的浪费,好管理。

10. AOP就是面向切面编程就是更多的使用代理,如同把java方法里相同的代码提出了作为父类的方法,子类可以直接调用时一样的。Spring就是把接口和父类抽象的思想从编译时带到运行时。只是这个搬迁以后很多的面孔变量一样。

11. 早DaoFactory的编写中发现,很多相似的功能写法,我们需要做就是把他们编写到一个切面里面,当作一个切面里时候,使用反射可以忽略业务的实际逻辑而是仅仅从功能的角度去加载。这样这个切面不仅减少到业务逻辑的强依赖还可以改变类加载的方式。为什么水平有aop的切面代理,就是把他们从业务逻辑中抽象出来了。在运行时的抽象不再是抽象相同的代码,而是抽象的业务逻辑。Sping包的aop的autoprofoy的BeanNameAutoProxyCreator就是面向切面的编程。同样的在加载class的时候对private等的判断也是面向切面编程的部分,控制权限部分也是面向切面编程的部分。

12. Struts也是aop的面向切面编程,但是整个struts里就这一个aop,而Spring对切面定义的更多,功能自然更强大,Spring是SSH中思想最丰富的框架。

13. 使用编程模式如同雕刻一个艺术品就是突出可以突出的,隐藏应该隐藏的,根据事物的可持久性,为了增强对人的步调统一性而设计的,这应该和所有的美学原则是一致的吧。

Struts总结

1.      在浏览器中输入网址后就是把http请求发送给了web服务器,web服务器会查找对应的页面返回个客户端。其实就是通过get请求页面。客户在form表单提交数据或者点击href的时候也是触发的http请求。

2.      客户和后台的交互是通过http消息流的,而window开发中的消息流是通过邮寄,投递等方式实现的,他们相当于http的post get方法,并且在名字上都是类比的。在liunx的界面到命令行的转换的时候,linux的界面更像是个浏览器,负责接收客户请求,然后把执行返回给浏览器,MVC的架构层次更明了。

3.      Spring就是服务器端的jQuery

4.      Spring的xml配置就是html的Dom树,容器通过管理xml的Dom树来管理bean之间的关系。之所以用浏览器类比,是因为spring和浏览器一样都是希望根据用户的操作互动的改变自身的适应能力,而不必更改代码。既然spring类比html,那么spring肯定要有事件的支持,事实上也真的有事件的支持。

5.      Spring有ClassPathApplicationContext,FilePathApplicationContext等作为容器。和java有不同的类加载器类似,类加载器也是一种容器。

6.      Windows每个系统盘都是一个Dom树,在盘之间的跳转需要真实的拷贝,而linux所有的空间是一个dom树,直接挂载就可以了。

7.      Spring的context是为对象提供运行时数据即是运行时环境的,同理,Servlet的context肯定也是为servlet提供运行时的环境的。ServelteContext是servlet的IOC容器。

8.      Hibernate的SessionFactory是单个数据库映射文件编译后的内存镜像,也就是通过sessionFactory可以访问数据库的整个内存内容。

9.      HibernateDaoSupport的整合有问题 所以不整合HibernateDaoSupport

 


原创粉丝点击