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 的实例化方式 在 Spring 框架中,BeanFactory 是一个核心组件,负责管理和实例化 Bean。Spring 3 中提供了三种实例化 BeanFactory 的方法,下面将详细介绍这三种方法。 第一种方法:从文件系统资源...
BeanFactory提供了加载配置元数据、实例化bean、注入依赖、管理bean生命周期等基本功能。当我们在配置文件中定义bean,并通过BeanFactory加载这些配置时,BeanFactory会根据配置创建bean实例。BeanFactory在需要时才...
五、实例化BeanFactory 通常,我们通过以下方式创建BeanFactory实例: ```java Resource resource = new ClassPathResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource); ``` 这里,`beans....
4. **初始化处理**:bean实例化后,`BeanFactory`可以调用初始化方法,执行后置处理器(BeanPostProcessor),以及执行其他自定义逻辑。 5. **bean的管理**:`BeanFactory`会维护一个bean的注册表,以便于管理和...
6. **后处理**:Spring提供了扩展点,如BeanPostProcessor,允许在bean实例化后和初始化前执行自定义逻辑。 7. **单例管理**:对于单例bean,BeanFactory会缓存它们的实例,确保每次请求时返回的是同一个bean。 ...
首先,BeanFactory是Spring中最基本的bean容器,它提供了对bean实例化、配置和管理的基本功能。通过BeanFactory,开发者可以注册bean定义,然后在运行时按需获取bean实例。BeanFactory支持延迟初始化,这意味着bean...
BeanFactory是一个工厂的顶层规范,它提供了Bean的实例化、管理和依赖注入等功能。BeanFactory的实现类有DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等,它们分别从不同的维度扩展了...
- **功能**: 注册一个`BeanPostProcessor`,这些处理器会在Bean实例化之后、初始化之前或初始化之后被调用。 - **参数**: `beanPostProcessor`,实现了`BeanPostProcessor`接口的对象。 - **应用场景**: 使用`...
本篇文章将详细探讨Spring实例化bean的三种主要方式,并提供相关的代码示例。这些方式包括使用类构造器、静态工厂方法以及实例化工厂方法。 1. **使用类构造器实现实例化** 这是最基础的实例化方式,通过指定`...
在 Spring 框架中,Bean 的实例化是通过 BeanFactory 中的 getBean 方法来实现的,该方法根据 bean 的名字、Class 类型和参数等来得到 bean 实例。 在了解 Bean 的实例化过程之前,我们需要了解 Spring 框架中 IoC ...
BeanFactory 是 Spring 框架中的核心组件之一,负责管理 Bean 的生命周期,包括实例化、配置和注入对象之间的关系。它是 Spring IOC(控制反转)容器的核心组件,提供了许多强大的功能,包括自动注入、依赖关系管理...
在初始化时就创建单例的bean,也可以通过配置的方式指定创建的Bean是多实例的。 此外,ConfigurableApplicationContext是ApplicationContext的子接口,包含一些扩展方法refresh()和close(),让ApplicationContext...
2. **Bean实例化**: 当调用`getBean`方法时,根据BeanDefinition创建Bean实例,可能是单例或多例。 3. **依赖注入**: 解析Bean的依赖关系,使用`DependencyDescriptor`查找依赖的Bean,并通过反射设置属性或调用...
在 Spring 框架中,Bean 对象实例化是一个非常重要的过程,本文将详细介绍 Spring Bean 对象实例化实现过程图解,通过示例代码介绍了 Bean 对象实例化的整个过程,对大家的学习或者工作具有一定的参考学习价值。...
进入`DefaultListableBeanFactory`的`preInstantiateSingletons()`方法,这个方法遍历所有的Bean定义,对于单例模式的Bean,进行实例化。 5. **获取Bean实例**: 在预实例化过程中,`getBean(beanName)`被调用,...
BeanFactory 是 Spring 框架中的一个核心接口,用于管理应用程序中的对象(也称为 bean)。它提供了一种将应用程序组件(如服务、数据源、...BeanFactory 负责解析这些配置信息,并在需要时实例化相应的 bean 对象。
4. 设置BeanFactory:在这个阶段,Bean已经实例化,并且已经设置了BeanFactory。 5. 设置ApplicationContext:在这个阶段,Bean已经实例化,并且已经设置了ApplicationContext。 6. 实现 Aware 接口:在这个阶段,...
Spring 是一个开源的 Java 应用框架,它以其轻量级、模块化和全面的企业级应用支持而闻名。Spring 的核心特性是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP),这使得...
实例化过程可以通过以下几种方式: - **默认构造函数**:如果没有提供其他构造函数,BeanFactory将使用无参数的默认构造函数创建bean。 - **工厂方法**:可以通过在配置中指定一个静态工厂方法,让BeanFactory调用...
在Spring框架中,Bean的实例化方式主要有两种:构造方式实例化和工厂方式实例化。构造方式实例化是通过构造方法对Bean进行实例化,包括无参构造和有参构造两种形式。工厂方式实例化是通过调用自定义的工厂方法对Bean...