zoukankan      html  css  js  c++  java
  • spring环境搭建

    第一步:在spring官网(官方地址为https://repo.spring.io/release/org/springframework/spring/)上下载最新版的spring框架的jar包,还需要下载一个必要组件 commons-logging-1.2-bin ,可以在apache官网下载。http://www.apache.org/ --> commons --> The Commons Proper --> logging --> download --> commons-logging-1.2-bin.zip。将Spring压缩包解压之后,将libs目录下的 *RELEASE.jar(共21个)都拷贝到你的workspace下的lib目录;将commons包也解压,将根目录的*.1.3.jar拷贝到lib目录下。

    第二步:

      1、J2EE提倡面向接口编程,Spring也是针对的接口编程,即在代码中只使用规范(即接口),而将真正的实现类配置在文件中,由Spring的配置文件来决定将会使用哪一个实现类,这也叫做控制反转(IOC)或者依赖注入(DI)。

      2、Demo:定义“人”“斧头”两个规范,即创建两个接口

    斧头接口:;斧头接口的一个实现类

    人接口:;人接口的一个实现:

    测试类1:

    重点是第6行和第7行,即Chinese类和StoneAxe类耦合在了java代码中,如果现在需求有变,我们在这里要使用一种新的斧头,即Axe有一个新的实现类SteelAxe,那么就必须修改这里的代码, SteelAxe axe = new SteelAxe(); 这对于代码维护其实并不方便。 对于这个问题,Spring的解决方案是将上面的步骤放在配置文件中,具体实现方法是这样的,

    首先创建一个配置文件,名字自定义即可

    可以看到配置文件中定义了上面两个接口的实现类的具体包路径,其中stoneAxe还被定义成了Chinese类的一个属性,

    有了这个配置文件之后,Spring就可以在底层利用java反射,首先创建出两个类对象(Chinese和StoneAxe),接着马上执行对象的setter方法,依据配置文件中各个类的依赖关系去初始化每个对象的属性,而这个过程,正是上面传统编程中的StoneAxe axe = new StoneAxe();p.setAxe(axe);这两部

    测试类2:

    执行结果:

    可以看到,在测试代码中,完全没有了Chinese和StoneAxe两个类的耦合依赖关系,转而将依赖关系放在了上面的XML文件中,底层通过java反射的方式进行初始化。

    即,将java代码中对象间的依赖关系的控制权交给了Spring配置文件,由Spring来生成对象,并且设置对象间的依赖关系,这就是控制反转(IOC)或者叫依赖注入(DI)。

    Spring自动生成对象(可禁用)和设置依赖关系是最基本的功能。

    Spring的IOC(或DI)机制,极大地降低了组件间的耦合,例如对于上面的需求变更,我们只需要在XML文件中新增一个bean节点,并设置好依赖关系即可,而测试代码不需要任何改变!

    新增Axe的实现类

    修改Spring配置文件,

    执行测试类结果,

    设值注入和构造注入

    对于依赖注入,有两种方式,一种是设置注入,即上面XML配置文件中设置<property />标签的方式,这种方法本质上是利用反射调用对象的setter方式进行初始化。

    另外,还可以使用构造注入的方式,即在XML配置文件中使用<constructor-arg />标签,不过这种方式要求有对应的构造方法才行。

    对于上面的例子,首先我们要让Chinese类有一个构造方法,

    接着我们将XML配置文件中的<peroperty>标签用<constructor-arg>标签替换,

    我们将得到一样的结果,只是实现的方式不一样而已。对于设值注入和构造注入两种方式如何选择呢,

    一般的,如果对依赖关系无需变化地注入,尽量采用构造注入。其他依赖关系的注入则考虑采用设值方式注入。

    ‘真实的’活着
  • 相关阅读:
    字符编码
    IO流技术
    TreeMap使用和Comparable比较
    Collections工具类
    使用迭代器进行遍历时
    238. 除自身以外数组的乘积
    python 字典按键、值排序
    collections.Counter用法
    442. 数组中重复的数据
    1395. 统计作战单位数
  • 原文地址:https://www.cnblogs.com/chenxi-hxl/p/9645466.html
Copyright © 2011-2022 走看看