`

获取spring的ApplicationContext的5种方式

 
阅读更多

Java类获取spring 容器的bean

 

常用的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文件中的配置信息

 

 

最后提供一种不依赖于servlet,不需要注入的方式

注意一点,在服务器启动时,Spring容器初始化时,不能通过以下方法获取Spring 容器,如需细节可以观看源码org.springframework.web.context.ContextLoader

 

Title1 import org.springframework.web.context.ContextLoader; 

import org.springframework.web.context.WebApplicationContext; 

 

WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); 

  wac.getBean(beanID); 

分享到:
评论

相关推荐

    Spring获取ApplicationContext对象工具类的实现方法

    在Spring中,典型的获取ApplicationContext对象的方式是使用ApplicationContext接口的一个实现类,如ClassPathXmlApplicationContext。这是一个根据给定XML文件的类路径的上下文实现。通常我们会在初始化Spring IoC...

    Spring中ApplicationContext加载机制

    首先,Spring 提供了两种选择来加载 ApplicationContext:ContextLoaderListener 和 ContextLoaderServlet。这两者在功能上完全等同,只是一个是基于 Servlet2.3 版本中新引入的 Listener 接口实现,而另一个基于 ...

    Spring获取webapplicationcontext,applicationcontext几种方法详解

    Spring 获取 WebApplicationContext、ApplicationContext 几种方法详解 在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的...

    SpringBoot获取ApplicationContext的3种方式

    SpringBoot获取ApplicationContext的3种方式 在SpringBoot中,获取ApplicationContext是非常重要的,因为ApplicationContext是Spring中的核心容器,提供了许多有用的功能,如获取容器中的各种bean组件、注册监听...

    spring 获得applicationcontext公用方法

    本文将深入探讨如何在Spring中获取`ApplicationContext`的公用方法,并结合提供的两个文件名`ShipOrderRecipientImpl.java`和`MyApplicationContextUtil.java`来分析可能的实现方式。 1. `ApplicationContext`概述...

    spring为ApplicationContext提供的3种实现分别为:ClassPathXmlApplicationContext

    至于标签中的"源码",这意味着深入理解Spring框架的实现细节,包括ApplicationContext的创建过程、bean的加载和依赖注入等,可以通过阅读Spring的源代码来获取更深入的知识。"工具"可能指的是使用一些辅助工具,如...

    获取spring容器的方法

    本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...

    三、Spring源码分析——ApplicationContext

    ApplicationContext提供了一种统一的方式来访问各种资源,如文件、数据库连接、JMS队列等。它通过Resource接口封装了资源访问,使得资源的获取和操作变得更加简单。 7. **AOP支持**: 虽然ApplicationContext本身...

    获取Spring容器

    在实际开发中,我们通常会使用`ApplicationContext`接口来获取Spring容器。可以通过多种方式来初始化`ApplicationContext`,其中最常见的有以下几种: 1. **XML配置文件**:使用XML配置文件来定义Spring容器中Bean...

    spring中通过ApplicationContext getBean获取注入对象的方法实例

    通过`ApplicationContext`,我们可以获取到Spring容器管理的所有Bean,或者根据Bean的名称或类型来获取特定的Bean实例。本文将详细介绍如何在Spring中通过`ApplicationContext`的`getBean`方法获取注入对象,并通过...

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    利用spring的ApplicationContext在程序中唤醒quartz的job

    通过在Spring配置中定义`SchedulerFactoryBean`,我们可以方便地配置Job和Trigger,并利用ApplicationContext获取Job的Bean实例。在测试或服务类中,我们可以利用这些配置启动Job,从而实现程序中的动态任务调度。这...

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    然而,有时我们需要在非Spring管理的组件或者非Spring环境下获取Spring管理的Bean。这时,我们就需要一种方式来访问Spring的ApplicationContext,它是Spring容器的核心,负责管理所有Bean。 一种常见的做法是创建一...

    Java获取Bean的几种方式.pdf

    本文主要探讨了Java获取Bean的多种方式,尤其在Spring Boot和IOC(控制反转)环境下。这些方式可以帮助开发者便捷地从Bean容器中检索和使用所需的Bean。 1. **初始化时保存ApplicationContext对象** 当应用启动时...

    Java中Spring获取bean方法小结

    总结,Spring框架通过BeanFactory和ApplicationContext提供了灵活的方式来管理和获取Bean。开发者可以根据应用需求选择合适的方式,从XML配置到注解注入,再到基于Java的配置,Spring都提供了全面的支持。理解这些...

    Java获取Spring中配置的Bean的三种方式

    在Java编程中,Spring框架是应用广泛的企业级开发工具,它提供了一种强大的依赖注入机制,使得开发者可以方便地管理并获取容器中的Bean。本文将详细介绍在Spring框架中获取配置Bean的三种主要方法。 1. **通过...

    day38 05-Spring的BeanFactory与ApplicationContext区别

    在Spring框架中,BeanFactory和ApplicationContext是两种不同的bean容器,它们各自有其特性和应用场景,理解二者的区别对于深入掌握Spring框架至关重要。 首先,BeanFactory是Spring中最基本的bean容器,它提供了对...

    SpringBoot 获取spring bean方式.rar

    本篇将详细介绍Spring Boot中获取Bean的几种常见方式。 首先,让我们理解什么是Spring Bean。在Spring框架中,Bean是一个由Spring容器管理的对象,通常代表应用中的业务组件或服务。Spring会负责Bean的创建、初始化...

    Spring如何获取Bean

    Spring 中获取 Bean 的多种方式 在 Spring 框架中,获取 Bean 是一个非常重要的步骤,因为它是使用 Spring 框架的基础。Spring 提供了多种方式来获取 Bean,这些方式可以根据不同的应用场景选择使用。 通过 XML ...

Global site tag (gtag.js) - Google Analytics