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要做两件事, 搭病床(环境),执行手术.! 那么打麻药的工作呢.? 不可能要病人站着打吧, 所以必须有病床的环境,打完麻药之后再动手术.! 这个比喻非常形象了.!

  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/Chenghao-He/p/7629845.html
Copyright © 2011-2022 走看看