Spring细节知识

spring-framework-3.0.5.RELEASE-with-docs.zip解压后四个主要目录

dist 二十几个jar(项目用这个)

docs 文档 API

project 源码

src 二十几个带-sources的jar(包含java源文件)

spring-framework-3.0.5.RELEASE-dependencies.zip解压后很多第三方类库的文件夹

每个文件夹下都有 jar 和 带-sources的jar

普通的Java SE应用

将spring解压缩包dist目录下的jar添加至CLASSPATH环境变量,如果使用Ant工具或者IDE工具,无需添加环境变量。

WEB应用

将spring和第三方类库的jar复制到WEB-INF/lib路径下。

Eclipse

Eclipse通过配置Build Path管理项目编译、运行所依赖的类库。

Create a Java Project -> Build Path -> Add Libraries -> User Library

只能保证在Eclipse下编译、运行通过,如果发布需要将这些jar与应用一同发布。

控制反转(Inversion Of Control,IoC)

由Spring容器为对象设置属性的方式被称为控制反转。

Spring把互相协作的关系称为依赖关系。

依赖注入 目前最优秀的解耦方式

当某个Java实例需要其他Java实例时,系统自动提供所需要的实例,无需程序显式获取。

Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。

调用者直接new被调用者的方式

1、扩展性差 被调用者扩展时 调用者的代码也需要改变

2、职责不清 我只需要使用被调用者的方法 却需要创建被调用者

依赖注入定义

程序运行过程中,如果需要另一个对象协作(调用它的方法、访问它的属性时)时,无需在代码中创建被调用者,而是依赖于外部容器的注入。

1、设值注入 2、构造注入

面向接口编程 更好地让规范和实现分离

对于一个JAVA EE应用,不管是DAO组件,还是业务逻辑组件,都应该先定义接口,该接口定义了该组件应该实现的功能。

Spring既可以采用DTD来定义配置文件的语义约束,也可以采用XML Schema来定义配置文件的语义约束。

projects目录的org.springframework.beans、org.springframework.context等子目录的src/main/resources路径下找到各种*.xsd文件

Spring IoC容器的3个基本点:

  • 各组件面向接口编程,各个组件的耦合提升至接口层次
  • 各个组件不再是程序主动产生
  • Spring采用配置文件、Annotation来管理Bean的实现类、依赖关系
构造注入优势:
  • 决定依赖关系的注入顺序,如优先注入Datasource
  • 依赖关系无需变化
  • 只有组件创建者才能改变依赖关系,对调用者透明,符合高内聚原则
劣势:
  • 没有设值注入直观、自然
  • 复杂的依赖关系过于臃肿,同时实例化依赖的全部实例,性能下降
  • 属性可选,更显笨重

猜你喜欢

转载自bobwaters.iteye.com/blog/2414741