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);
}
}
测试结果:
还没有评论,来说两句吧...