发表于: 2017-06-13 21:55:42

1 1109


今天完成的事情:

看spring入门经典并记录笔记.



明天计划的事情:

把自己的task11拿出来,按自己的想法添加和修改

再拿出task11的原始界面,自己想办法不参照例子自己写出来.

具体操作:先想怎么实现,然后想用什么方法,有个大概概念去网上查,书上查..绝望后最后一招参照师兄的代码并敲三遍.写注释


遇到的问题:

其实如果按页数来算根本就没看多少.我承认有部分注意不集中影响进度,但是效率和画重点功能的欠缺也在今天体现了出来.


效率没有想象中快,也试过想加快进度看书,结果发现不行,这样之前讲的东西还是水过鸭背,你要我说个大概我还是一样模糊的说出来,但具体怎么回事还是不知道.如果我看得仔细,万一碰上这个东西其实项目中不怎么用,或者讲到最后说他被淘汰了,这段时间的花费是不是太亏了?而且也影响进度时间...没想好应该怎样读书才是正确的方法...嗯我连读书都不会了....


目前流程是:看,思考,找例子,找博客,然后总结记笔记,有些东西可能用不上,但是不会分辨是否"有用",是否已被完全淘汰?如果已被淘汰还需不需要了解了?或者干脆直接跳过只看现阶段替代他的东西就行了?


收获:

全搬过来的话太多了,拿一部分吧


1:EJB的问题小结

1:必须编写多个接口来创建业务组件
2:EJB和j2ee技术必须紧耦合
3:无法在j2ee平台之外运行组件
4:难以在容器之外进行单元测试
5:需要经过漫长且复杂的打包,部署,测试
6:j2ee技术的特点和局限性要求提升程序的风格

上述问题导致pojo的产生来解决EJB存在的问题



2:控制反转

在组件类中,不需要使用新的操作符来实例化依赖组件,而是在运行时由容器实例将依赖组件注入组件.因此对依赖项的控制由组件转到容器.这种模式被称为控制反转,简称IOC.
IOC有两种主要形式:
1:依赖查找:Inversion of lookup
容器向其管理的组件提供了回调方法,而组件则通过这些回调方法与容器进行交互并显式地获取它们的依赖项.这种情况下,通常使用一个查找上下文来访问依赖组件以及容器管理的其他资源
2:依赖注入:dependency injection
组件提供了合适的构造函数或setter方法,以便容器可以注入依赖组件.一般来说,很少在组件内执行显式依赖查找,大多数情况下是通过构造函数或setter方法在创建组件的时候注入依赖项





3:依赖注入

依赖注入的基本原则是应用程序对象不应该负责查找它们所依赖的资源或协作者,而是应该由ioc容器处理对象创建和依赖注入,从而导致资源查找的外部化,从应用程序代码转移到容器.
依赖注入的好处:
1:可从应用程序代码中完全删除查找逻辑代码,依赖项可以一种可插拔的方式注入目标组件中.这样组件就不需要知道依赖项的位置或类.组件的单元测试就变得非常容易.
2:可以轻易地将依赖组件装配到组件中,因为在组件中并不存在具体的类依赖项,所以不必进行任何的代码修改,可以将代码从一个容器移植到另一个容器中,直接运行
3:完全不朽要实现任何特殊的接口.由于编写的类只是普通的java对象,没必要为了运行组件而进行部署
开发人员可以使用两种依赖注入方法:
1:构造函数注入
2:setter注入
一个好的容器应该可以同时支持这两种方法,并且允许混合使用
setter注入
当一个对象被容器实例化之后就会马上调用setter方法.该注入在组件的创建或初始化阶段发生,在处理业务方法调用之前完成.不存在调用setter方法相关的线程问题.
优点:组件创建后可以进行重新配置,依赖项可以在运行时更改
缺点:不是所有所需的依赖项都可以在使用前被注入,从而使组件处于第一部分配置状态.
构造函数注入
用处:通过构造函数注入,bean可以利用构造函数参数来表达依赖项,这样就可以在组件创建期间注入依赖项.
优点:保证每一个被管理的组件都处于一致的状态,并且在创建之后可以马上使用.还有就是编写代码量要比setter注入少一点.
缺点:组件创建完毕后就无法对组件进行重新配置,除非为相关属性提供一个setter作为构造函数参数



4;轻量级容器

完全不使用容器来开发企业级应用程序是有可能的,但如果这样的话,就必须亲自创建和装配组件以及执行所需的中间件服务.显然这些任务会极大地分散开发人员的精力使他们无法专心处理系统的业务需求,从而延迟系统的完成时间
因此,在实践中,拥有如下一个环境可能会更好:
所有组件都被创建和装配,并且提供了所需的中间件服务.
这样一个环境被称为容器.javaee平台就提供了多个这样的容器,每一个专门容器为应用程序的一个特定层提供所需的服务.
当谈到容器时,可以认为任何容器都应该能够相该环境中所管理的组件提供一些基本服务,如:
1:生命周期管理
2:依赖解析
3:组件查找
4:应用程序配置
除了上述基本服务,如果容器还能提供一些中间件服务就更好了,如:
1:事务管理
2:安全性
3:线程管理
4:对象和资源池
5:对组件的远程访问
6:通过JMX之类的API管理组件
7:容器的扩展和定制
一个轻量级容器包括所有上述功能,但并不需要为了依赖这些API而编写应用程序代码.也就是说:轻量级容器没有侵入性,启动非常快,并且不需要将其部署到一个功能齐全的javaEE应用服务器上就能提供上述服务.
在企业级java世界中,spring application framework是最著名的轻量级容器之一.




返回列表 返回列表
评论

    分享到