(一)Spring IoC源码-1.容器的初始化-01容器概述

学习Spring源码,我们应该从哪里学习呢?

IoC概述

提到Spring,你第一时间想到的是什么?无论是在面试中,还是在具体的项目中,IoC和AOP都是避不开的。而IoC更为重要,所以我决定从IoC开始学习。

IoC(Inversion of Control)意为控制反转,是一种设计思想。资源不由使用资源的双方管理,而由不使用资源的第三方管理,这就是IoC。IoC有很多好处。第一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。

Spring的IoC容器是IoC在Java语言实现中最著名的一个。

传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象。而在Spring中,IoC容器来创建这些对象,即由IoC容器来控制对象的创建。谁控制谁?IoC容器控制了对象的创建。反转了什么?创建对象的控制权被反转了。

现在知道了,要从IoC容器开始学习IoC。

IOC容器的简单使用

在正式学习Spring容器之前,我们先来复习下Spring最简单的用法。bean是Spring中最核心的东西。Spring相当于一个工厂,而bean就是产品,bean由IOC容器负责配置、创建、管理。IOC 容器可以看成是 beans 关系的一个集合。下面是一个简单的例子。

定义bean
MyBean .java

public class MyBean {

}

配置文件
MyBean .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-2.5.xsd">

    <bean id="myBean" class="container.MyBean"></bean>

</beans>

测试类MyBeanTest .java

public class MyBeanTest {
    @SuppressWarnings("deprecation")
    @Test
    public void myBeanTest(){
        //需要spring-beans、spring-core的jar
        BeanFactory bf = new XmlBeanFactory(new ClassPathResource("MyBean.xml"));
        MyBean myBean = (MyBean)bf.getBean("myBean");
    }
}

测试结果

八月 02, 2017 3:04:40 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [MyBean]

Spring提供了两种类型的IoC容器实现:

  1. 实现了BeanFactory接口的基本IoC容器。
  2. 实现了ApplicationContext接口的高级IoC容器。

直接使用BeanFactory并不多见,在企业级的应用中更多的会使用ApplicationContext。在以后的文章中会详细介绍它们。

例子很简单,但你知道测试类中短短的一行代码BeanFactory bf = new XmlBeanFactory(new ClassPathResource("MyBean.xml"));做了哪些操作吗?

如果你想了解,就继续向下看吧。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值