Spring学习之IoC

说到spring,大家都会津津乐道,什么依赖注入,什么控制反转,但是真的深入过源码了解吗,深入看过英文文档吗,自己尝试写过ioc吗,我相信大多数人都是没有的,我也是如此,所以在深入学习spring的时候做一下笔记,希望帮到自己的同时也能帮助你们。


IoC:Inversion of Control,控制反转。

Inversion:控制,控制对象的创建和销毁(生命周期)

Control:将对象的控制权交给IOC容器


Q:为什么要把对象的控制权交给IoC容器,交给IoC容器有什么好处?

A:自己控制对象,都得自己主动创建对象,销毁对象,更换代码的时候,代价很大,得在代码层面找到所有原对象,进行修改。


Q:如何创建一个Bean,交由 Spring 容器管理?

A:加入 spring 核心库和测试

 <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.1.3.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.3.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

编写 spring.xml 配置 bean

<?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创建并管理-->
  <bean id="myBean" class="csdn.ch.spring.ioc.Bean"/>
</beans>

编写 自己的 Bean


/**
 * 自定义一个Bean 交给Spring 管理
 *
 * @author chenhao
 * @version 1.0.0
 * @since 1.0.0
 *
 * Created at 2019-09-19 14:45
 */
public class Bean {

  public Bean() {
    System.out.println("调用Bena的构造方法。。。");
  }
}

测试

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 测试 ioc 控制bean
 *
 * @author chenhao
 * @version 1.0.0
 * @since 1.0.0
 *
 * Created at 2019-09-19 14:47
 */
public class IoCtest {

  @Test
  public void test() {
    ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
    Bean myBean = context.getBean("myBean", Bean.class);
    System.out.println("myBean= " + myBean);
  }

}

测试结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值