`
includemain
  • 浏览: 32992 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

Spring 实例化BeanFactory 的方式

    博客分类:
  • Java
阅读更多
package com.tan.spring.ioc;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

public class IOCDemo1 {

	/**
	 * 
	 * 控制反转模式( 也叫做依赖性介入) 基本的概念: 不创建对象,但是描述创建他们的方式.
	 * 在代码中不直接与对象和服务连接, 但是在配置文件中描述哪一个组件需要那一项服务
	 * 容器( Spring 框架中 是IOC容器) 负责这些联系在一起
	 * 
	 * 
	 * IOC场景中让其创建了所有的对象, 并设置必要的属性将他们联系在一起,决定什么时间调用方法
	 * 
	 * 实现的模式:
	 * ①: 服务需要实现专门的接口,通过接口,由对象提供这些服务,
	 * 	   可以从对象查询依赖性( 例如需要的附加的服务 )
	 * ②: 通过 JavaBean 的属性 (例如 setter 方法) 分配依赖性
	 * ③: 依赖性以构造函数的形式提供, 不以javabean属性的形式公开
	 * @param args
	 */
	public static void main(String[] args) {
		/*
		 * Spring设计的核心就是 org.springframework.beans 包,它的设计目标与 JavaBean组件一起使用。
		 * 这个包通常不是由用户直接使用, 而是由服务器将其用作其他的多数功能的底层中介。下一个最高级抽象是 
		 * BeanFactory接口,是工厂设计的模式的实现,允许通过名称创建和检索对象。
		 * BeanFactory也可以管理对象之间的关系.
		 * 
		 * BeanFactory 支持两个对象的模型。
		 * 	- 单态: 提供了具有特定名称的对象的共享实例,可以再查询时候对其进行检索。Singleton 是默认的也是最常用的对象的模型。对于无状态服务对象很理想。
		 *  - 原型: 确保每次检索都会创建单独的对象。在每个用户都需要自己的对象的时候,原型模型最适合。
		 * bean 工厂的概念是 Spring 作为 IOC 容器的基础。 IOC 将处理事情的责任从应用程序代码转义到框架。
		 * 
		 * */

		/*
		 * BeanFactory 接口 
		 * org.springframework.beans.factory.BeanFactory 是一个简单的接口,所以可以针对各种底层存储方法实现。最常用的BeanFactory 定义是
		 * XmlBeanFactory, 根据 Xml文件的定义装入 bean
		 * */

		// 实例化 Spring IOC 容器的方式一
		Resource resource = new FileSystemResource("mybean.xml");
		BeanFactory factory1 = new XmlBeanFactory(resource);

		// 实例化 Spring IOC 容器的方式二
		ClassPathResource classPathResource = new ClassPathResource(
				"mybean.xml");
		BeanFactory factory2 = new XmlBeanFactory(classPathResource);

		// 实例化 Spring IOC 容器的方式三
		ApplicationContext context1 = new FileSystemXmlApplicationContext(
				"mybean.xml");
		ApplicationContext context2 = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext.xml",
						"applicationContext-part2.xml" });

		// of course, an ApplicationContext is just a BeanFactory
		BeanFactory factory3 = (BeanFactory) context1;
		BeanFactory factory4 = (BeanFactory) context2;

	}

}


package com.tan.spring.util;

import java.io.File;
import java.io.FilenameFilter;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

/**
 * 
 * @author Administrator
 *
 */
public class ApplicationContextUtil {
	
	private static ApplicationContext context;
	
	public static ApplicationContext buildApplicationContext(final String path) {
		if (path == null || path.trim().length() == 0) {
			String root = ApplicationContextUtil.class.getResource("/").getFile();
			File dir = new File(root);
			String[] xmls = dir.list(new FilenameFilter(){
				public boolean accept(File dir, String name) {
					return name.toLowerCase().endsWith(".xml");
				}
			});
			for (String xml : xmls) {
				System.out.println(xml);
			}
			return new ClassPathXmlApplicationContext(xmls);
		}
		return new FileSystemXmlApplicationContext(path);
	}
	
	public static ApplicationContext buildApplicationContext(final String ... paths) {
		if (paths == null || paths.length == 0) {
			return new ClassPathXmlApplicationContext("applicationContext.xml");
		}
		return new ClassPathXmlApplicationContext(paths);
	}
	
	public static ApplicationContext getApplicaionContext() {
		return context;
	}
}
分享到:
评论

相关推荐

    BeanFactory的实例化

    BeanFactory 的实例化方式 在 Spring 框架中,BeanFactory 是一个核心组件,负责管理和实例化 Bean。Spring 3 中提供了三种实例化 BeanFactory 的方法,下面将详细介绍这三种方法。 第一种方法:从文件系统资源...

    Spring中ApplicationContext和beanfactory区别.rar

    BeanFactory提供了加载配置元数据、实例化bean、注入依赖、管理bean生命周期等基本功能。当我们在配置文件中定义bean,并通过BeanFactory加载这些配置时,BeanFactory会根据配置创建bean实例。BeanFactory在需要时才...

    二、Spring源码分析——BeanFactory

    五、实例化BeanFactory 通常,我们通过以下方式创建BeanFactory实例: ```java Resource resource = new ClassPathResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource); ``` 这里,`beans....

    简单模拟Spring的beanFactory

    4. **初始化处理**:bean实例化后,`BeanFactory`可以调用初始化方法,执行后置处理器(BeanPostProcessor),以及执行其他自定义逻辑。 5. **bean的管理**:`BeanFactory`会维护一个bean的注册表,以便于管理和...

    spring中的BeanFactory解析xml文件

    6. **后处理**:Spring提供了扩展点,如BeanPostProcessor,允许在bean实例化后和初始化前执行自定义逻辑。 7. **单例管理**:对于单例bean,BeanFactory会缓存它们的实例,确保每次请求时返回的是同一个bean。 ...

    day38 05-Spring的BeanFactory与ApplicationContext区别

    首先,BeanFactory是Spring中最基本的bean容器,它提供了对bean实例化、配置和管理的基本功能。通过BeanFactory,开发者可以注册bean定义,然后在运行时按需获取bean实例。BeanFactory支持延迟初始化,这意味着bean...

    简单了解Spring中BeanFactory与FactoryBean的区别

    BeanFactory是一个工厂的顶层规范,它提供了Bean的实例化、管理和依赖注入等功能。BeanFactory的实现类有DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,它们分别从不同的维度扩展了...

    Spring的BeanFactory的接口注解

    - **功能**: 注册一个`BeanPostProcessor`,这些处理器会在Bean实例化之后、初始化之前或初始化之后被调用。 - **参数**: `beanPostProcessor`,实现了`BeanPostProcessor`接口的对象。 - **应用场景**: 使用`...

    Spring实例化bean的方式代码详解

    本篇文章将详细探讨Spring实例化bean的三种主要方式,并提供相关的代码示例。这些方式包括使用类构造器、静态工厂方法以及实例化工厂方法。 1. **使用类构造器实现实例化** 这是最基础的实例化方式,通过指定`...

    Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等).doc

    在 Spring 框架中,Bean 的实例化是通过 BeanFactory 中的 getBean 方法来实现的,该方法根据 bean 的名字、Class 类型和参数等来得到 bean 实例。 在了解 Bean 的实例化过程之前,我们需要了解 Spring 框架中 IoC ...

    68-BeanFactory与FactoryBean1

    BeanFactory 是 Spring 框架中的核心组件之一,负责管理 Bean 的生命周期,包括实例化、配置和注入对象之间的关系。它是 Spring IOC(控制反转)容器的核心组件,提供了许多强大的功能,包括自动注入、依赖关系管理...

    spring中的BeanFactory与FactoryBean的讲解

    在初始化时就创建单例的bean,也可以通过配置的方式指定创建的Bean是多实例的。 此外,ConfigurableApplicationContext是ApplicationContext的子接口,包含一些扩展方法refresh()和close(),让ApplicationContext...

    Spring源码学习三:BeanFactory解析1

    2. **Bean实例化**: 当调用`getBean`方法时,根据BeanDefinition创建Bean实例,可能是单例或多例。 3. **依赖注入**: 解析Bean的依赖关系,使用`DependencyDescriptor`查找依赖的Bean,并通过反射设置属性或调用...

    Spring bean对象实例化实现过程图解

    在 Spring 框架中,Bean 对象实例化是一个非常重要的过程,本文将详细介绍 Spring Bean 对象实例化实现过程图解,通过示例代码介绍了 Bean 对象实例化的整个过程,对大家的学习或者工作具有一定的参考学习价值。...

    Spring Bean创建初始化流程.docx

    进入`DefaultListableBeanFactory`的`preInstantiateSingletons()`方法,这个方法遍历所有的Bean定义,对于单例模式的Bean,进行实例化。 5. **获取Bean实例**: 在预实例化过程中,`getBean(beanName)`被调用,...

    BeanFactory内部解析:Spring框架的心脏如何运作

    BeanFactory 是 Spring 框架中的一个核心接口,用于管理应用程序中的对象(也称为 bean)。它提供了一种将应用程序组件(如服务、数据源、...BeanFactory 负责解析这些配置信息,并在需要时实例化相应的 bean 对象。

    详解Spring中Bean的生命周期和作用域及实现方式

    4. 设置BeanFactory:在这个阶段,Bean已经实例化,并且已经设置了BeanFactory。 5. 设置ApplicationContext:在这个阶段,Bean已经实例化,并且已经设置了ApplicationContext。 6. 实现 Aware 接口:在这个阶段,...

    简单Spring 实例(自己写的)

    Spring 是一个开源的 Java 应用框架,它以其轻量级、模块化和全面的企业级应用支持而闻名。Spring 的核心特性是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP),这使得...

    BeanFactory创建对象.docx

    实例化过程可以通过以下几种方式: - **默认构造函数**:如果没有提供其他构造函数,BeanFactory将使用无参数的默认构造函数创建bean。 - **工厂方法**:可以通过在配置中指定一个静态工厂方法,让BeanFactory调用...

    spring学习之路(黑马课程笔记)

    在Spring框架中,Bean的实例化方式主要有两种:构造方式实例化和工厂方式实例化。构造方式实例化是通过构造方法对Bean进行实例化,包括无参构造和有参构造两种形式。工厂方式实例化是通过调用自定义的工厂方法对Bean...

Global site tag (gtag.js) - Google Analytics