专栏首页日常分享Spring 学习笔记(二)—— IOC 容器(BeanFactory)

Spring 学习笔记(二)—— IOC 容器(BeanFactory)

  使用Spring IoC容器后,容器会自动对被管理对象进行初始化并完成对象之间的依赖关系的维护,在被管理对象中无须调用Spring的API。

  为了实现IoC功能,Spring提供了两个访问接口:

  •   org.springframework.beans.factory.BeanFactory
  •   org.springframework.context.ApplicationContext

  前者为Bean工厂,借助于配置文件能够实现对JavaBean的配置和管理,用于向使用者提供Bean的实例;

  后者为ApplicationContext,其构建在BeanFactory基础上,辞工了更多的实用功能。


  注意:

    Spring中将IoC容器管理的对象称为Bean,这与传统的JavaBean不完全相同,只是借用了Bean的名称。


  BeanFactory

    BeanFactory作为制造Bean的工厂,BeanFactory接口负责向容器的使用者提供实例,其主要功能是完成容器管理对象的实例化。

    常用的方法:

方法

功能描述

boolean containsBean(String name)

判断Spring容器是否包含ID为name的Bean对象

Object getBean(String name)

返回容器ID为name的Bean对象

Object getBean(String name,Class requiredType)

返回容器中ID为name、类型为requiredType的Bean

Class getType(String name)

返回容器中ID为name的Bean的类型

    例:

    创建一个bean.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 id="book" class="IoCDemo.Book">
           <property name="name" value="SSH开发"/>
           <property name="author" value="rekent"/>
           <property name="publishHouse" value="publisher"/>
           <property name="price" value="70"/>
       </bean>
</beans>

  再创建一个Book的JavaBean,以及一个测试,BeanFactoryExample.java

package IoCDemo;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;

/**
 * Created by Richard Cheung on 2017/7/23.
 */
public class BeanFactoryExample {
    public static void main(String[] args){
        ClassPathResource resource=new ClassPathResource("IocDemo/Bean.xml");
        DefaultListableBeanFactory factory=new DefaultListableBeanFactory();
        XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(factory);
        reader.loadBeanDefinitions(resource);
        Book book= (Book) factory.getBean("book");
        System.out.println(book.getName());
        System.out.println(book.getAuthor());
        System.out.print(book.getPublishHouse());
    }


}

  输出结果为:

…………
信息: Loading XML bean definitions from class path resource [IocDemo/Bean.xml]
SSH开发
rekent
publisher
Process finished with exit code 0

  首先使用ClassPathResource类指定了配置文件是位于类路径下的bean.xml

  然后构造了DefaultListableBeanFactory对象,并将DefaultListableBeanFactory对象传递给新构造的XmlBeanDefinitionReader对象。

  通过XmlBeanDefinitionReader对象加载了配置文件。

  最后通过DefaultListableBeanFactory中的getBean()方法从IoC容器中获取了Bean。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringMVC<一> 基本结构与配置

    刚刚踏入SpringMVC的学习,有一定Strust2的使用经验,边看书看博客,边总结,如有不对的地方还希望各位大佬多多指正。

    Rekent
  • $.ajax()方法详解

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。

    Rekent
  • Spring 学习笔记(八)—— 注解使用整合

    需先在配置文件中,配置一个org.springframework.beans.factory.annotation. AutowiredAnnotationBe...

    Rekent
  • mobx 能为我们带来哪些改变

    mobx是一个状态管理器,用于TFRP(transparently applying functional reactive programming)自发式函数...

    腾讯IVWEB团队
  • SSH框架之Spring第四篇

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    海仔
  • day35_Spring学习笔记_03

    掌握:PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW、PROPAGATION_NESTED

    黑泽君
  • SSH整合主要XML代码

    HUC思梦
  • spring笔记(三)

    程序的“事务控制”, 可以用aop实现! 即只需要写一次,运行时候动态织入到业务方法上。

    HUC思梦
  • Spring与hibernate与mybatis

    众所周知,hibernate与mybatis都是项目开发中对持久层封装的工具,可以大大的提高开发的速度,但是他们有什么区别呢?

    黑白格
  • 重磅来袭,抱歉,来晚啦

    来一波 、基本概念 1.1、spring Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Ro...

    码神联盟

扫码关注云+社区

领取腾讯云代金券