引用
http://java-cn.iteye.com/blog/478623
普通的java类获取spring 的bean配置
这个问题困扰了我2天终于找到原因了,原来是少了在xml文件中的配置。
如下是在网上找到的5中获取spring 中bean的方式总结:
方法一:在初始化时保存ApplicationContext对象
代码:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
方法二:通过Spring提供的工具类获取ApplicationContext对象
代码:
import org.springframework.web.context.support.WebApplicationContextUtils;
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac1.getBean("beanId");
ac2.getBean("beanId");
说明:
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。
方法三:继承自抽象类ApplicationObjectSupport
说明:抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationContext。
Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入。
方法四:继承自抽象类WebApplicationObjectSupport
说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext
方法五:实现接口ApplicationContextAware
说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。
Spring初始化时,会通过该方法将ApplicationContext对象注入。
虽然,spring提供了后三种方法可以实现在普通的类中继承或实现相应的类或接口来获取spring 的ApplicationContext对象,但是在使用是一定要注意实现了这些类或接口的普通java类一定要在Spring 的配置文件application-context.xml文件中进行配置。否则获取的ApplicationContext对象将为null。
如下是我实现了ApplicationContextAware接口的例子
package quartz.util;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SpringConfigTool implements ApplicationContextAware{//extends ApplicationObjectSupport{
private static ApplicationContext context = null;
private static SpringConfigTool stools = null;
public synchronized static SpringConfigTool init(){
if(stools == null){
stools = new SpringConfigTool();
}
return stools;
}
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
context = applicationContext;
}
public synchronized static Object getBean(String beanName) {
return context.getBean(beanName);
}
}
XML文件中的配置信息:(一定要加上这段内容)
<bean id="SpringConfigTool" class="quartz.util.SpringConfigTool"></bean>
分享到:
相关推荐
在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和管理Bean,并利用Java的反射机制来实例化这些Bean。 首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些...
Spring的核心特性包括AOP(面向切面编程)和IOC(控制反转),以及依赖注入(DI)。以下是对这些概念的详细解释: **面向切面编程(AOP)** AOP是一种编程范式,它允许开发者将关注点从主业务逻辑中分离出来,例如...
【Spring核心IOC以及DI】是...总的来说,Spring的核心IOC和DI是通过容器来管理和装配对象,实现了组件间的松耦合,使得代码更加灵活、可维护。通过理解和熟练使用这些概念,开发者可以构建出更高质量的Java后端应用。
Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由代码自身来完成,而在Spring Ioc中...
通过XML或注解方式声明bean,Spring可以自动管理bean的实例化、初始化和销毁,从而简化了代码并提高了可测试性。 其次,Spring的面向切面编程(AOP)允许开发者将关注点分离,比如日志、事务管理等横切关注点,从...
IOC,或称DI,是Spring的核心特性,它使得开发者可以将对象的创建和管理交给Spring容器处理,从而降低代码间的耦合度。通过配置文件或者注解,开发者可以定义对象及其依赖关系,Spring容器会自动管理这些对象的生命...
Spring框架的源代码是开放的,通过阅读源代码,开发者可以更深入地了解IOC和DI的实现细节,比如BeanFactory和ApplicationContext是如何管理Bean的生命周期和依赖关系的。 "工具"标签则表明这个主题可能与使用Spring...
在Spring框架中,IOC(Inversion of Control,控制反转)是其核心概念之一,它改变了传统应用程序中的对象创建和管理方式。本学习资料主要聚焦于Spring的IOC容器,特别是从最基本的BeanFactory开始,逐步深入理解...
在Spring框架中,Bean的加载顺序是理解Spring IoC(Inversion of Control,控制反转)容器工作原理的关键部分。...通过合理的配置和设计,我们可以充分利用Spring的IoC和DI特性,实现松耦合、易于测试和维护的代码。
在 Spring 中,IOC(Inversion of Control,控制反转)和 DI(Dependency Injection,依赖注入)是两个核心概念,而 AOP(Aspect Oriented Programming,面向切面编程)则是实现模块化和解耦的重要工具。现在,我们...
Spring中的Bean是IoC容器管理的对象,它们是可复用的组件。当我们在Spring应用中使用组件时,不需要手动创建实例,而是直接从容器中获取。这里可以类比为外包公司的例子,Spring作为外包公司(Bean工厂),管理着...
在Java开发中,Spring框架因其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)特性而广受欢迎。本文将深入探讨如何实现一个类似于Spring的IoC注解装配机制。 IoC是...
总结来说,Spring的DI和IoC是其核心特性,它们提供了一种优雅的方式来管理对象的依赖关系,增强了代码的灵活性和可测试性。开发者可以通过XML配置或注解的方式实现IoC,使应用程序更易于维护和扩展。
在Java世界中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC)能力,成为企业级应用开发的首选框架之一。理解并模拟Spring的IOC机制对于深入学习Spring...
Spring框架是Java开发中不可或缺的一部分,它以其控制反转(IoC)和依赖注入(DI)的核心特性,极大地简化了应用程序的构建与管理。在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式...
Spring IOC和DI的区别在于,IOC是一种设计思想,强调的是控制权的转移,而DI是实现这一思想的具体方式,即通过外部容器来管理对象的依赖关系。理解这两者的关系有助于我们更好地设计和实现面向对象的应用。 在实际...
本案例主要探讨的是Spring框架的核心特性之一——依赖注入(Dependency Injection,简称DI),通常也被称为IOC(Inversion of Control,控制反转)。通过这个小案例,我们可以深入理解Spring如何实现IoC以及属性注入...
5. **Bean的生命周期**:Spring容器对Bean的生命周期进行管理,包括初始化、正常使用、销毁等阶段,开发者可以自定义生命周期回调方法以进行特定操作。 ### Spring AOP **面向切面编程(AOP)** 是Spring的另一个...
Spring通过IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)来管理这些Bean。在这个"Spring Bean简单应用实例"中,我们将深入理解这两个概念以及如何在实际应用中使用它们。 首先,...