Spring-IOC讲解(学习记录)

Spring框架有两个核心,IOC与AOP,今天要讲解的就是IOC(控制反转)

什么是IOC?

IOC又叫控制反转,简单来说就是将创建对象,和对象调用的方式交给spring容器来创建,就少了自己手动去调用的过程,让Spring自己去管理,我们只管用,不管创建。

目的:为了降低各层次之间的耦合性。

入门案例

1.在pom.xml中导入对应的依赖

<dependencies>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context</artifactId>

            <version>5.3.8</version>

        </dependency>

    </dependencies>
2.定义接口和实现类
public interface HeroService {

   void save();

}



public class HeroServiceImpl implements HeroService {

    public void save() {

        System.out.println("save方法被执行了···");

    }

}
3.创建并配置Spring核心配置文件命名为applicarionContext.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"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
//通过bean标签,将要Spring容器管理的实现类交给容器,id是名字为唯一值,class是指向的那个类

​<bean id="heroService" class="cn.edu.cqie.service.impl.HeroServiceImpl"></bean>

</beans>
4.测试是否成功交给Spring容器
public class Test {

    public static void main(String[] args) {

        ApplicationContext cxt=new ClassPathXmlApplicationContext("applicationContext.xml");
//ApplicationContext:是Spring上下文接口,它是Spring IoC
//ClassPathXmlApplicationContext:是ApplicationContext的一个实现类,它可以从类路径下加载XML配置文件来Initializing Bean工厂。
//"applicationContext.xml":指定了需要加载的Spring配置文件路径,该文件一般存放在src/main/resources目录下。
//new ClassPathXmlApplicationContext():通过构造函数加载和解析applicationContext.xml文件配置内容,并建立BeanFactory对象容器。

        HeroService heroService = (HeroService)cxt.getBean("heroServcie");
//通过getBean这个方法和id来让Spring容器给一个对象

        heroService.save();
//调用对象的方法

    }

}

IOC基本讲解

1.bean标签基本配置

对象交由Spring去管理

在默认情况下bean标签调用的是类中的无参构造函数,所以类中没有无参是无法创建对象的

id:Bean实例在Spring容器中的唯一标识

class:Bean实例的全限定名称

scope:用来确定对象的作用范围

        1.singleton:单例,在不使用scope标签时,容器默认就是单例,是根据无参构造的

                对象创建:是当使用对象时创建的也就是

                

ApplicationContext cxt=new ClassPathXmlApplicationContext("applicationContext.xml");

        执行完这行代码的时候,容器就已经创建好了对象了,而且你在创建多个对象的时候,其实用的都是一个对象,

对象运行:只要对象在使用,就一直活着

对象销毁:当这个对象长时间没有使用的时候会被Java的垃圾回收机制给回收。

        2.prototype:多例

               每次获取实例的请求创建了一个新的实例,相当于每创建一个对象,它们是分别不同的对象,而不是用的一个对象,它是由请求方自己负责当前返回对象的后记生命周期的管理工作,包括该对象的销毁

        3.request:在一次Http请求中,容器会返回该Bean的同一实例。而对于不同的http请求会产生新的Bean实例。当请求结束后,该实例也将会被销毁.

        4.session在一次Session(会话)中,容器会返回Bean的同一实例。对于不同会话会创建新的实例。当会话结束后,该实例也将被销毁。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值