Spring文档阅读笔记-IOC容器

Spring Framework 版本:4.3.23

官方文档:https://docs.spring.io/spring/docs/4.3.23.RELEASE/spring-framework-reference/htmlsingle/#overview-core-container

7.2.2 实例化一个容器

 加载xml配置信息创建IOC容器:

ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

注:创建IOC容器时可以指定多个xml配置文件


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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- services -->

    <bean id="petStore" class="org.springframework.samples.jpetstore.services.PetStoreServiceImpl">
        <property name="accountDao" ref="accountDao"/>
        <property name="itemDao" ref="itemDao"/>
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions for services go here -->

</beans>
"ref"标签维护了多个bean之间的依赖关系


当工程很大、配置文件内容很多的时候,可以讲配置信息放在多个xml里,基于这些xml来创建IOC容器有两种方法:

1、ClassPathXmlApplicationContext构造器中传递多个xml

ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
2、在其中一个xml里使用import标签 指明包含其它的xml,如:

<beans>
    <import resource="services.xml"/>
    <import resource="resources/messageSource.xml"/>
    <import resource="/resources/themeSource.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>
</beans>
注:import导入时,路径可以是相对路径、绝对路径


7.2.3 使用容器

通过ApplicationContext 对象的getBean方法获取注册的bean对象,如:

// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

// retrieve configured instance
PetStoreService service = context.getBean("petStore", PetStoreService.class);

// use configured instance
List<String> userList = service.getUsernameList();


7.3 Bean 综述

ioc容器管理的bean 是通过用户提供的配置信息创建的,bean的配置方法有:

1、xml里的<bean>标签

2、注解的方式,如@Bean、@Component、@Service、 @Controller 

3、Groovy Bean Definition DSL

在ioc容器里bean的配置信息被封装为BeanDefinition对象。


BeanDefinition对象包含的信息分为以下几类:

1、类的全名称,如com.k6k4.XXX

2、bean的一些行为配置,如:scope, lifecycle 

3、bean的依赖信息

4、其它的一些信息

具体包括:

class: 类全名

name:bean名称

scope :作用范围

constructor arguments: 构造器参数

properties :属性

autowiring mode :自动注入策略

lazy-initialization mode :延迟实例化策略

destruction method:销毁时调用的方法


除了通过提供bean的配置信息可以将bean注册到ioc容器中,还可以通过代码的方式注册:








个人资料
时海
等级:8
文章:272篇
访问:16.0w
排名: 2
推荐圈子
上一篇: 深度学习笔记
下一篇:HashMap源码
猜你感兴趣的圈子:
Spring交流圈
标签: bean、xml、beans、services、ioc、面试题
隐藏