package com.byd.mes.util;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import com.byd.mes.bussiness.bo.main.ShopOrderBO;
import com.byd.mes.bussiness.service.activity.Activity;
import com.byd.mes.util.cache.CacheManager;
public class BeanFactory implements ApplicationContextAware {
private static final Log log = LogFactory.getLog(BeanFactory.class);
private static ApplicationContext applicationContext;
private static Map<String, String> systemParamters;
private static PropertyConfigurer propertyConfigurer;
public static final String INSTANCE_SINGLETON = "singleton";
public static final String INSTANCE_PROTOTYPE = "prototype";
private static Map clazzInstanceContext= new HashMap();
public static final Map<String,ShopOrderBO> map=new HashMap<String,ShopOrderBO>();
public static Object getBean(String beanName) {
return applicationContext.getBean(beanName);
}
public static Activity getFunction(String className) {
return getFunction(className,BeanFactory.INSTANCE_SINGLETON);
}
public static Activity getFunction(String className,String instanceType) {
Object obj = getClazzIns(className,instanceType);
if(!(obj instanceof Activity)) throw new RuntimeException("必须实现com.byd.mes.bussiness.service.siteoperation.sfc.Function接口");
return (Activity) obj;
}
public static Object getClazzIns(String className,String instanceType) {
try{
if(StringUtils.equalsIgnoreCase(INSTANCE_SINGLETON,instanceType)){
Object fn = clazzInstanceContext.get(className);
if(fn == null){
fn = BeanUtils.instantiateClass(Class.forName(className));
clazzInstanceContext.put(className, fn);
}
return fn;
}
else if(StringUtils.equalsIgnoreCase(INSTANCE_PROTOTYPE,instanceType)){
return BeanUtils.instantiateClass(Class.forName(className)) ;
}
}catch(Exception ex){
throw new RuntimeException("实例化类'"+className+"'失败 ->"+ex.getMessage(),ex);
}
throw new RuntimeException("实例化类'"+className+"'失败 ");
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
log.info("set applicationContext to static>>>"+applicationContext);
BeanFactory.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Map<String, String> getSystemParamters() {
return (Map)propertyConfigurer.getProperties();
}
public void setPropertyConfigurer(PropertyConfigurer propertyConfigurer) {
BeanFactory.propertyConfigurer = propertyConfigurer;
}
}
分享到:
相关推荐
BeanFactory 的实例化方式 在 Spring 框架中,BeanFactory 是一个核心组件,负责管理和实例化 Bean。Spring 3 中提供了三种实例化 BeanFactory 的方法,下面将详细介绍这三种方法。 第一种方法:从文件系统资源...
在Spring框架中,ApplicationContext和BeanFactory是两种不同的bean容器,它们各自有其特性和应用场景,理解二者的区别对于深入学习和使用Spring至关重要。 首先,BeanFactory是Spring中最基础的bean管理容器,它...
本文将通过模拟Spring的`BeanFactory`来深入理解其工作原理,帮助开发者更好地掌握Spring的核心概念。 `BeanFactory`是Spring框架中最基础的bean管理容器,它是所有更高级别的容器(如`ApplicationContext`)的基类...
在Spring框架中,BeanFactory和ApplicationContext是两种不同的bean容器,它们各自有其特性和应用场景,理解二者的区别对于深入掌握Spring框架至关重要。 首先,BeanFactory是Spring中最基本的bean容器,它提供了对...
《Spring源码分析——BeanFactory》 在Java的IoC(Inversion of Control)和DI(Dependency Injection)领域,Spring框架扮演着至关重要的角色。BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用...
Spring的BeanFactory的接口的中文解释
Spring注解驱动开发第41讲——Spring IOC容器创建源码解析(一)之BeanFactory的创建以及预准备工作(合起来整个过程)
BeanFactory 是 Spring 框架中的一个核心接口,用于管理应用程序中的对象(也称为 bean)。它提供了一种将应用程序组件(如服务、数据源、控制器等)解耦并配置到应用程序中的方式。 总的来说,可以初步理解...
在Java Web开发中,BeanFactory是Spring框架的核心组件之一,它是工厂模式的一种实现,主要用于管理对象(也称为bean)的创建、配置和依赖注入。面向接口编程是一种编程范式,鼓励开发者通过接口来定义功能,而不是...
在Spring框架中,BeanFactory是核心的容器,它负责管理和创建对象,这些对象通常被称为"bean"。BeanFactory是Spring中最基本的依赖注入(DI)容器,提供了对bean的生命周期管理以及装配。在这个文档中,我们将深入...
spring之beanfactory 的一些基本知识与其关系使用
Spring的IoC容器是其核心特性之一,它通过BeanFactory和ApplicationContext两个主要接口来实现控制反转(Inversion of Control,IoC)的概念。BeanFactory作为基础的IoC容器,提供了全面的IoC服务,包括对象的注册、...
### Spring的BeanFactory的接口注解 #### 一、引言 在Spring框架中,`BeanFactory`是工厂模式的一种实现,它负责管理容器中的Bean的生命周期与依赖注入。了解`BeanFactory`及其相关接口的功能对于掌握Spring的核心...
Spring 中的 BeanFactory 和 FactoryBean BeanFactory 是 Spring 框架中的核心组件之一,负责管理 Bean 的生命周期,包括实例化、配置和注入对象之间的关系。它是 Spring IOC(控制反转)容器的核心组件,提供了...
在Java的Spring框架中,`BeanFactory`和`ApplicationContext`是两个非常重要的核心概念,它们是IoC(Inversion of Control,控制反转)容器的实现,用于管理应用程序中的对象和依赖关系。理解这两个容器的区别和用途...
在Spring框架中,BeanFactory是核心的容器,它负责管理和装配应用中的对象,即bean。当我们谈论“Spring中的BeanFactory解析XML文件”时,我们实际上是在讨论如何通过XML配置文件来定义、创建和管理bean。这篇文章将...
在Spring框架中,BeanFactory是核心的IoC(Inversion of Control)容器接口,它负责管理和维护Bean的生命周期。BeanFactory提供了对Bean的创建、初始化、销毁等操作的支持,是Spring容器的基础。当我们通过XML、Java...
简单了解Spring中BeanFactory与FactoryBean的区别 Spring框架中有两个非常关键的接口:BeanFactory和FactoryBean。虽然它们的名字相似,但它们的作用和实现机制却有很大的不同。 BeanFactory是Spring IoC容器的...
BeanFactory是Spring中最基本的IOC容器接口,它负责管理Bean的生命周期,包括实例化、初始化、销毁等操作。在实际应用中,我们通常使用其子类ApplicationContext,它提供了更丰富的功能,如国际化支持、事件发布等。...
使用BeanFactory实现创建对象 BeanFactory是一种工厂模式,主要用来创建对象。在Java中,BeanFactory是Spring框架中的一个核心组件,用于管理和创建对象。通过使用BeanFactory,可以将对象的创建和依赖注入解耦,...