本章重点
一.什么是spring,它能够做什么?
二. 什么是控制反转(或DI机制)
三. ioc优势
四.spring插件安装
一: 什么是spring,它能够做什么?
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
范围:任何Java应用
特性: 控制反转(IoC)
面向切面(AOP)
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可. (spring是 中间层框架(比如SSH strurs spring hibernate)、万能胶(基本可以粘合所有框架),容器框架 )
二. 什么是控制反转(或DI机制)
依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色 需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者
因此也称为依赖注入。
spring以动态灵活的方式来管理对象 , 注入的三种方式:设置注入,构造注入 ,自动装配。
-
spring注入的方式及类型
ioc可以通过上下文管理工程里的所有javabean,管理方式有很多种 如下:
1.set注入(提供set方法)
基本数据类型注入 eg.studentAction
集合注入 eg. studentAction
对象注入 eg. teacherAction2.构造注入(提供构造方法)
基本数据类型注入 constructor-arg name=“属性名” value=“值”>3.自动装配(分两种)
default-autowire=“byType”: (适合一个接口对应一个实现类) | default-autowire=“byName”: (适合一个接口对应多个实现类) |
---|---|
如果说某个Javabean,要使用接口,之前是需要通过set注入,或者构造注入,通过设置property name=“userBiz” ref=“userBiz2”> 给接口去注入实现类。当你选择自动装配bytype 时,那么springContext会在整个上下文自动去寻找该接口的实现类(property不用配置了) | 如果说某个Javabean 要使用接口,byName是通过接口的属性名去spring-Context中寻找id=接口名 的实现类 (property不用配置了) |
3.如何创建 spring-context.xml 配置bean(安装插件后,插件安装方法在下面)
问:如何在spring当中定义和配置一个JavaBean(使用无参构造方法+set方法创建一个JavaBean) 在spring-context.xml配置
3.1 id:在容器中查找Bean的id(唯一、且不能以/开头)
3.2 class:bean的完整类名
3.3 name:在容器中查找Bean的名字(唯一、允许以/开头、允许多个值,多个值之间用逗号或
空格隔开)
3.4 scope:(singleton|prototype)默认是singleton
3.4.1 singleton(单例模式):在每个Spring IoC容器中一个bean定义对应一个对象实例
3.4.2 prototype(原型模式/多例模式):一个bean定义对应多个对象实例
3.4 abstract:将一个bean定义成抽象bean(抽象bean是不能实例化的),抽象类一定要定义成
抽象bean,非抽象类也可以定义成抽象bean
3.5 parent:指定一个父bean(必须要有继承关系才行)
3.6 init-method:指定bean的初始化方法
3.7 constructor-arg:使用有参数构造方法创建javaBean
注1:struts2的Action请使用多例模式
三 ioc优势
<1>. 不用自己new对象,把创建对象的任务交给spring框架,spring自动生成( 将以前由程序员实例化对象/赋值的工作交给了spring处理).
<2>. 便于维护,管理javabean
sring上下文
spring-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:apo="http://www.springframework.org/schema/apo"
xmlns:context="http://www.springframework.org/schema/context"
default-autowire="byName"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 讲解 Ioc 的优势 例子: ioc注入对象-->
<bean class="com.zking.ioc.biz.impl.UserBizImpl" id="userBiz" ></bean>
<bean class="com.zking.ioc.biz.impl.UserBizImpl2" id="userBiz2"></bean>
<bean class="com.zking.ioc.web.UserAction" id="userAction">
<property name="userBiz" ref="userBiz2"></property><!-- 给接口注入实现类 -->
</bean>
<bean class="com.zking.ioc.web.TeacherAction" id="teacherAction">
<property name="userBiz" ref="userBiz2"></property>
</bean>
<!--spring注入的类型
1. set注入(基本数据类型以及集合) -->
<bean class="com.zking.ioc.web.StudentAction" id="stuAction">
<property name="hobbies">
<list>
<value>篮球</value>
<value>排球</value>
</list>
</property>
<!-- <property name="sname" value="张翊晗"></property>
<property name="spwd" value="123"></property>
-->
<!--2.构造注入 (基本数据类型) -->
<constructor-arg name="sname" value="张翊晗"></constructor-arg>
<constructor-arg name="spwd" value="123"></constructor-arg>
</bean>
<!--2.spring 自动装配 -->
<bean class="com.zking.ioc.biz.impl.BookBizImpl" id="bookBiz" ></bean>
<bean class="com.zking.ioc.web.BookAction" id="bookAction"></bean>
</beans>
四.需要用到插件 ,以下是插件安装步骤
(使用插件 1.离线安装 springsource-tool-suite-3.9.6.RELEASE-(使用插件 离线 springsource-tool-suite-3.9.6.RELEASE-e4.9.0-updatesite
新增插件
后面的步骤没有截图了,就是next,next …
2. 在线下载安装spring tool suite官方下载地址:http://spring.io/tools/sts/all
或者直接进入eclipse商城下载安装
)
搜索spring-tool 下载安装
如果安装插件失败了,执行以下操作
测试是否安装成功
可以新建spring就是安装成功了