IOC的基本使用

文章介绍了IOC(控制反转)的概念,它是如何通过容器管理对象的创建和装配,对比了传统方式与IOC方式的区别。接着讲解了Spring中IOC的基本使用,包括配置文件方式和注解方式,并详细阐述了依赖注入的两种方式:构造函数注入和setter注入。
摘要由CSDN通过智能技术生成

一、目标

  • 理解IOC的思想和使用

  • 了解IOC的bean的声明周期

  • 理解什么是依赖注解

二、内容分析

  • 重点以及难点

    • 理解IOC的思想

    • 掌握IOC的使用

三、内容

1.概念

控制反转(IOC,Inversion of Control)是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。通过容器实现对象的创建,属性赋值,依赖的管理。

以前我们在代码中,使用new 构造方法创建对象,现在不用了, 由容器代替开发人员管理对象。

2. 传统方式和ioc方式的区别

2.1 传统

我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上的对象来协作完成,每个对象在需要使用他的合作对象时,自己均要使用像new object() 这样的语法来将合作对象创建出来,这个合作对象是由自己主动创建出来的,创建合作对象的主动权在自己手上,自己需要哪个合作对象,就主动去创建,创建合作对象的主动权和创建时机是由自己把控的,而这样就会使得对象间的耦合度高了,A对象需要使用合作对象B来共同完成一件事,A要使用B,那么A就对B产生了依赖,也就是A和B之间存在一种耦合关系,并且是紧密耦合在一起。

2.2 IOC

创建合作对象B的工作是由Spring来做的,Spring创建好B对象,然后存储到一个容器里面,当A对象需要使用B对象时,Spring就从存放对象的那个容器里面取出A要使用的那个B对象,然后交给A对象使用,至于Spring是如何创建那个对象,以及什么时候创建好对象的,A对象不需要关心这些细节问题(你是什么时候生的,怎么生出来的我可不关心,能帮我干活就行),A得到Spring给我们的对象之后,两个人一起协作完成要完成的工作即可。

3.基本使用

3.1方式一:配置文件

  • 创建java类

  •  创建xml文件 resources/文件名.xml

  • xml配置(在beans标签里面配置)

<!--  id:spring生成对象的时候,放到容器里面,会给每一个对象生成一个id,用于区分对象        class:告诉他哪个类
      scope="singleton"默认是单例模式,如果想调成多例模式将"singleton"成"prototype"-->
<bean id="student" scope="singleton" class="com.test.spring.StuService"></bean>
  • 获取对象
 /**IOC的基本使用**/
        /**方式一:通过【配置的方式】来获取对象**/
        //读取配置文件
        // 生成spring容器
        // 读取spring的xml文件,根据内容生成对应的对象,放到容器里面
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

        // 通过id获取对象,传入id,通过id获取对象
        StuService stuService1 = (StuService) applicationContext.getBean("student");
        // 通过类获取对象,传入类,通过类获取对象
        StuService stuService2 = applicationContext.getBean(StuService.class);
        System.out.println(stuService2.getStuInfo());

3.2 方式二:注解

  • 创建类(用@Component)
/**方式二:通过【注解】来获取对象**/
// spring扫描到这个注解的时候,会自动生成对象
@Component
@Scope("singleton")//单例模式"prototype"是多例模式
//bean id名称默认是类的首字母小写
public class TeacherService {

}
  •  配置xml的component-scan(在beans标签里面配置)
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

<!-- 扫描器,会去扫描注解,有对应注解的会自动生成对象 -->
<context:component-scan base-package="com.test.spring"></context:component-scan>

</beans>
  • 获取对象

获取对象的方式与方式一相同,通过注释方法创建的对象的bean id是类的首字母小写后面字母大小写不变的类名

4、依赖注入

IOC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。

4.1 使用构造函数

前提:类中需要提供一个对应参数列表的构造函数

标签:constructor-arg

标签属性:

index:指定参数在构造函数参数列表中的索引位置

type:指定参数在构造函数中的数据类型

name:指定参数在构造函数中的名称,用这个找给谁赋值

value:它能赋的值是基本数据类型和String类型

ref:它能赋的值是其他bean类型,也就是说,必须得是在配置文件中配置过的bean

4.2 使用set赋值

标签:property

标签属性

​        name:找的是类中set方法后面的部分

​        value:给属性赋值的是基本数据类型和String类型

​        ref:给属性赋值是其他bean类型的

 注意:1.基本数据类型用value赋值,引用数据类型用ref赋值

            2.不论是用构造函数的方式还是用Set方式来依赖注入,其中用构造函数的方式前提类里有相关参数构造函数,用Set方式前提是有相关参数的Set方法

5、小结

学习了spring的一个核心功能IOC(控制反转),理解了控制反转的作用以及为什么要用控制反转,同时理解了什么是依赖注入,学会了通过XML文件配置IOC和不同方式的依赖注入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值