发表于: 2018-04-07 20:11:31

1 697


今天完成的事情: 

介绍
Spring框架提供了全面的编程和配置模型为现代的基于Java的企业应用-在任何类型的部署平台。Spring的一个关键元素是应用程序级别的基础架构支持:Spring侧重于企业应用程序的“管道”,以便团队可以专注于应用程序级业务逻辑,而不必与特定部署环境形成不必要的联系。
特征
  • 核心技术:依赖注入,事件,资源,i18n,验证,数据绑定,类型转换,SpEL,AOP。
  • 测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient
  • 数据访问:事务,DAO支持,JDBC,ORM,编组XML。
  • Spring MVC和 Spring WebFlux Web框架
  • 集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。
  • 语言:Kotlin,Groovy,动态语言。

IoC也被称为依赖注入(DI)。它是一个过程,对象通过构造函数参数,工厂方法的参数或在工厂方法构造或返回后在对象实例上设置的属性来定义它们的依赖关系,即它们使用的其他对象。容器 在创建bean时会注入这些依赖关系。这个过程基本上是相反的,因此名为Inversion of Control(IoC),通过使用类的直接构造或诸如Service Locator模式之类的机制来控制其依赖关系的实例化或位置的bean本身。
1.2 Spring的IoC原理:IoC(inversion of control)是控制反转的意思,另一个名称是DI(dependency injection)依赖注入。原理是当对象A需要对象B作为输入的时候,不需要对象A自己去创建和使用对象B(在A中new一个对象B),这个任务交给IoC容器来完成,即IoC容器将一个对象B注入对象A。对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。所谓依赖注入,就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。IoC容器的作用就是,利用关系注入的方式,实现对象之间的解耦。

1.3 IoC的优势:
        (1) 降低组件之间的耦合性,是的一个组件是否有故障,不会影响其他组件的运行,可维护性好,便于单元测试和故障诊断。
        (2) 每个部件可以独立开发,有利于大型项目划分为小项目进行开发。
        (3) 提高了模块的可复用性。一个模块可以在多个项目中重复使用。
        (4) 模块具有热插拔性。当需要更换掉其中一个子类的时候,只需要修改配置文件。
1.4 IoC容器的技术剖析:IoC容器中最基本的技术就是“反射(reflection)”编程,所谓反射编程就是根据给出的类名(字符串方式)来动态生成对象。

1.5 IoC的劣势:
        (1)引入了IoC容器,是的对象生成步骤变得复杂。
        (2)通过反射方式生成对象在运行效率上有一定损耗。
        (3)使用IoC框架产品需要大量配置工作,比较繁琐,对于小项目来说,增加了工作成本。
        (4)IoC框架产品本事是否成熟需要进行评估,如果引入不成熟的产品,会影响到整个项目。
如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。我们可以看到,在这样的齿轮组中,如果有一个齿轮出了问 题,就可能会影响到整个齿轮组的正常运转。
齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似。
解耦:得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器,所以,IOC容器成了整个系统的关键核心,它起到了一种类似“粘合剂”的作用,把系统中的所有对象粘合在一起发挥作用
1.5 IoC的劣势:
        (1)引入了IoC容器,是的对象生成步骤变得复杂。
        (2)通过反射方式生成对象在运行效率上有一定损耗。
        (3)使用IoC框架产品需要大量配置工作,比较繁琐,对于小项目来说,增加了工作成本。
        (4)IoC框架产品本事是否成熟需要进行评估,如果引入不成熟的产品,会影响到整个项目。

明天计划的事情:

             完成spring+mybatis对数据库的删减改查。
遇到的问题:

              xml配置和整合,路径经常匹配出错,概念还是不是很明白。

收获:

         Spring整合Mybatis的方法,基础还没理解透彻。但是明白了大致方向(主要是各种配置的映射关系,函数是写在实体类里还是别的地方,SQL映射文件,mapper文件在哪里调用等待)。


返回列表 返回列表
评论

    分享到