使用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。

Spring 学习笔记(二)—— IOC 容器(BeanFactory)的更多相关文章

  1. Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)

    在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IO ...

  2. Spring学习笔记1——IOC: 尽量使用注解以及java代码

    在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IO ...

  3. Spring学习记录1——IoC容器

    IoC容器 1.1  IoC概述 Ioc(Inverse of Control,控制反转)是Spring容器的内核.对于软件来说,即某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,即由 ...

  4. Spring学习一: Ioc容器

    Spring 容器:      Spring 容器是Spring框架的核心.Spring容器将创建Bean对象实例,把它们联系在一起,配置它们,并管理它们整个生命周期从创建到销毁.Spring 容器通 ...

  5. Castle学习笔记----初探IOC容器

    通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件. 1.建立容器 建立容器也就是IWindsorContainer.接着我门要向容器中注册服务,并 ...

  6. Spring学习笔记(二)之装配Bean

    一,介绍Bean的装配机制 在Spring中,容器负责对象的创建并通过DI来协调对象之间的关系.但是我们要告诉Spring创建哪些Bean并且如何将其装配在一起.,装配wiring就是DI依赖注入的本 ...

  7. Spring学习总结二——SpringIOC容器二

    一:指定bean的依赖关系 例如examplebean对象依赖examplebean1对象,那么在创建examplebean对象之前就 需要先创建examplebean1对象. 1:创建Example ...

  8. spring学习笔记二 注解及AOP

    本节需要导入spring-aop包 注解 使用注解的目的是为了代替配置,在使用注解时,省略键时,则是为value赋值. 扫描某个包下的所有类中的注解 <?xml version="1. ...

  9. Spring学习笔记二:注入方式

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html  我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...

  10. spring学习笔记之---IOC和DI

    IOC和DI (一)IOC (1) 概念 IOC (Inverse of Control) 反转控制,就是将原本在程序中手动创建对象的控制权,交给spring框架管理.简单的说,就是创建对象控制权被反 ...

随机推荐

  1. Maven中maven-source-plugin,maven-javadoc-plugin插件的使用:

    摘要:今天领导说要把项目通过maven生产源码包和文档包并发布到自己的私服上,经过查看mavne官网发现有两个maven插件可以做到这些工作,一个是maven-source-plugin,另一个是ma ...

  2. AngularJS 指循环数组对象

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  3. Java日志框架介绍

    一.序言 日志为系统的必不可少的一部分,通过输出的日志我们可以排查线上出现的各种问题,就像断案的线索一样.我们还可以通过日志数据分析用户的行为习惯做大数据分析. 二.日志框架分类及其历史 框架的种类: ...

  4. Webpack4 学习笔记五 图片解析、输出的文件划分目录

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 webpack打包图片和划分文件路径 使用图片的方式 通过 new Image() 在 css中设置 background-imag ...

  5. 深入浅出:了解jsonp跨域的九种方式

    什么是“”跨域”: 跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容.由于安全原因,跨域访问是被各大浏览器所默认禁止的.当一个域与其他域建立了信 ...

  6. Oracle客户端安装配置

    Oracle客户端安装配置.绿色版Oracle客户端配置使用PLSQL 安装Oracle客户端 准备工作,首先下载对应Oracle版本的客户端,这个可以去Oracle官网下载,加压完目录如下: 点击s ...

  7. Kernel list_head demo实现

    内核中很多地方用到队列,如果每一个数据结构都实现一个双向队列,并针对这些数据结构实现对应的操作,那么代码将会非常冗余,于是内核抽象出了list_head数据结构,并文参考内核中的代码写成,实现了一个l ...

  8. JZOJ 3521. 道路覆盖

    Description ar把一段凹凸不平的路分成了高度不同的N段,并用H[i]表示第i段高度.现在Tar一共有n种泥土可用,它们都能覆盖给定的连续的k个部分. 对于第i种泥土,它的价格为C[i],可 ...

  9. PHP表单安全过滤和防注入 htmlspecialchars() 和test_input()

    什么是 htmlspecialchars() 函数? htmlspecialchars() 函数把特殊字符转换为 HTML 实体.这意味着 < 和 > 之类的 HTML 字符会被替换为 & ...

  10. Linux系统完整安装在虚拟机Mini

    打开VMware Workstation虚拟机,然后如下图一步到位: 此处只是简单的安装Linux系统,要想查看安装后的IP等配置看: https://www.cnblogs.com/gentle-a ...