zoukankan      html  css  js  c++  java
  • Spring简介

    框架和工具类区别?

    解析:

     1.企业级系统

        大规模:用户数量多、数据规模大、功能众多

        性能和安全要求高

        业务复杂

    灵活应变

    2.Java技术如何应对

         EJB Accp3.0 ....----->Spring

    3.Spring之父简介

      Rod Johnson,SpringFramework创始人, interface21 CEO

      丰富的c/c++背景,丰富的金融行业背景

      1996年开始关注Java服务器端技术

      Servlet2.4和JDO2.0专家组成员

      2002年著写《Expoert one-on-oneJ2EE设计与开发》,改变了Java世界

      技术主张:技术以实用为本,音乐学博士

     4.Spring相关知识简介

    AOP 联盟官网

    http://aopalliance.sourceforge.net/

    http://sourceforge.net/projects/aopalliance/files/aopalliance/1.0/

    02.IOC和DI

    3w1h教学法:

    What:什么是IOC 控制反转

    Why:为什么IOC?

    When :什么时候使用IOC?

    How:怎么用?

    1.先来看控制反转:

        控制反转(Inversion of Control),是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心,beans。

      理解一:将组件对象的控制权从代码本身转移到外部容器()

      理解二:IOC控制反转:指创建对象实例的控制权从代码控制剥离到IOC容器(spring容器)控制。

    IOC原理:

    在源代码中频繁的使用new关键字,占用大量内存空间,所以使用IoC来解耦,通过xml节点来告知容器如何对内存中构建的对应类型的对象名称做命名,来减少代码量,优化内存所占用的空间。

     2.再来看:DI依赖注入(Dependency Injection)

        DI依赖注入:指创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。

      两者关系:它们是spring核心思想的不同方面的描述。 (重点)

     3.DI 和 IOC 详细阐述
        首先,DI和IOC是差不多的概念。 一个重要特征是接口依赖,是把对象关系推迟到运行时去确定. 
          DI是一个初始化实例的过程,分为三种1.setter based 2.constructor based 3.interface based,在spring 中就是应用前两种;但又不仅仅是初始化实例,而且是运用接口的概念去实现这种注入依赖。静态地看,只是依赖一个接口,但实际运行起来,是依赖一个实现了该接口的具体类。 
    IOC就是面向接口编程的应用 
    1.一个通常的做法(非面向接口编程的方法),对象A依赖对象B,B会作为A的属性,可以理解为A直接控制B; 
    2.IOC的做法,对象A依赖于接口C,而不直接依赖于实现了接口C的B,也就是A不能直接控制是哪个具体实现了C的B去做相应的事情,而是由我们控制可以由哪个实现了接口C的B去处理,也就是控制反过来了,是由B来决定了,而不是由A,实现就是面向接口编程。 

    对象之间的关系 (面向对象分析 OOA、面向对象设计 OOD 、面向对象编程 OOP)

    分析      --------   设计  ------     编程

    是                泛化           extends 

    能                实现           接口 implements

    有                关联           成员变量

    用                依赖           方法中局部变量

    IoC能做什么

    IoC不是一种技术, 只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致 类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样 也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

    其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。

    IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。 

     IoC和DI

    DI—Dependency Injection,即“依赖注入”:是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并 非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何 代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

    理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:

    谁依赖于谁:当然是应用程序依赖于IoC容器;

    为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

    谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

    注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

    IoC和DI由什么关 系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以 2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。

    注:如果想要更加深入 的了解IoC和DI,请参考大师级人物Martin Fowler的一篇经典文章《Inversion of Control Containers and the Dependency Injection pattern》,原文地址:http://www.martinfowler.com/articles/injection.html。

    要煮饭了,各位发离线就好

    FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.! 
    StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的.! 
    这样的改革当然是有好处的.! 
    为什么这么说.? 应该知道如果我们自己定义过滤器的话, 是要放在strtus2的过滤器之前的, 如果放在struts2过滤器之后,你自己的过滤器对action的过滤作用就废了,不会有效!除非你是访问jsp/html! 
    那我现在有需求, 我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
    那么StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤器.! 
    给你打个比喻, 现在有病人要做手术, 现在struts2要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!

  • 相关阅读:
    importToMbtiles
    http-server服务跨域设置
    Leaflet 测试加载高德地图
    矢量切片
    zigzag方式编码
    CentOS7安装docker
    CentOS7安装NodeJS
    CentOS7上Python3.5安装
    JDK8下maven使用maven-javadoc-plugin插件报错
    Ubuntu16.10上安装NodeJS6.9.2
  • 原文地址:https://www.cnblogs.com/Chenghao-He/p/7629845.html
Copyright © 2011-2022 走看看