Spring IOC工作原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/samjustin1/article/details/88820953
  • Spring框架的概念
  • Spring中IOC
  • Spring框架原理
  • beanFactory和AppilcationContext的区别

一.Spring框架的概念

Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。

二.Spring中的IOC

IOC:(全称:Inverse Of Control )控制反转,容器主动将资源推送给它所管理的组件,组件所做的是选择一种合理的方式接受资源。

简单的理解:把创建对象和维护之间的关系的权利由程序中转移到Spring容器的配置文件中。

DI:(全称:Dependency Injection)依赖注入,IOC的另一种表现方式,组件以一种预先定义好的方式来接受容器注入的资源。

三.Spring框架原理

例子

  1. 新建一个Person, Book实体类;
  2. applicationContext.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的配置文件 -->
<bean id="person" class="org.jingdong.bean.life.Person">
	<property name="name" value="grl"></property>
	<property name="age" value="11"></property>
	<property name="book" ref="book"></property>
</bean>
<bean id="book" class="org.jingdong.bean.life.Book">
	<property name="name" value="think in java"></property>
	<property name="place" value="USA"></property>
	<property name="price" value="79"></property>
</beans>
  1. Main.java
public class Main {
    public static void main(String[] args) {
        // 创建IOC容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //从容器中获取bean实例
        Person person = (Person) ac.getBean("person");
        //使用bean
        System.out.println(person.getName());
    }
}

运行原理分析:

(1).当ApplicationContext ac = new ClassPathXmlApplicationContext(“applicationContext .xml”);被执行时,Spring容器对象被创建,同时applicationContext .xml中的bean就会被创建到内存中:

(2)运行原理图:
在这里插入图片描述

四.beanFactory和ApplicationContext的区别

配置bean的方式:

(1).通过ApplicationContext上下文容器:当在加载xml配置文件时,配置文件中的配置的bean已经被实例化

(2).BeanFactory:在加载配置文件时,配置文件中的bean不被实例化,只有当通过getBean(),获取bean实例的时候才被创建。

总结:通过BeanFactory配置的bean比通过ApplicationContext配置的节约内存。

猜你喜欢

转载自blog.csdn.net/samjustin1/article/details/88820953
今日推荐