Spring框架之 Ioc(控制反转)

本文详细介绍了Spring框架的核心特性——控制反转(IoC),解释了Spring如何通过依赖注入管理对象,并讨论了其优势,如简化对象创建和维护。此外,还提到了Spring的配置方式,包括构造注入、设置注入和自动装配,以及如何在Spring上下文中定义和配置JavaBean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章重点

一.什么是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以动态灵活的方式来管理对象 , 注入的三种方式:设置注入,构造注入 ,自动装配。

  1. spring注入的方式及类型
    ioc可以通过上下文管理工程里的所有javabean,管理方式有很多种 如下:
    1.set注入(提供set方法)
    基本数据类型注入 eg.studentAction
    集合注入 eg. studentAction
    对象注入 eg. teacherAction

    2.构造注入(提供构造方法)
    基本数据类型注入 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就是安装成功了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值