`

spring 动态获取bean

阅读更多

在c/s结构 我们可以通过ApplicationContext的getBean方法来获取bean

例如:

写道
ApplicationContext ctx= new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
 Object obj = ctx.getBean("beanname");

  

而在b/s中我们可以通过WebApplicationContext来获取bean:

实例:首先我们配置spring的log4j级别为DEBUG模式:

log4j.logger.org.springframework=DEBUG

 在web.xml里面配加载项:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

  启动后我们会在控制台看见如下信息:

Published root WebApplicationContext as ServletContext attribute with name [org.springframework.web.context.WebApplicationContext.ROOT]
 Root WebApplicationContext: initialization completed in 1453 ms

 也就是说spring将WebApplicationContext 作为ServletContext 得一个attrubute放在了ServletContext 理参数名为org.springframework.web.context.WebApplicationContext.ROOT。而ServletContext 是application(jvm)级别的,因此我们可以通过servlet的ServletContext 来得到它

 

而获取WebApplicationContext 可以使用WebApplicationContextUtils的方法,此方法需要一个ServletContext 实例作为参数

public static WebApplicationContext getWebApplicationContext(ServletContext sc)

 因此我们可以这样获得我们的bean

WebApplicationContext wb = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Object obj = ctx.getBean("beanname");

 跟踪下spring代码:

public static WebApplicationContext getWebApplicationContext(ServletContext sc) {
		return getWebApplicationContext(sc, WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);//实现如下:
	}
public static WebApplicationContext getWebApplicationContext(ServletContext sc, String attrName) {
		Assert.notNull(sc, "ServletContext must not be null");
		Object attr = sc.getAttribute(attrName);
                                return (WebApplicationContext) attr;

end。

3
0
分享到:
评论

相关推荐

    spring 获取bean

    spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean

    spring运行过程中动态注册bean

    在Spring框架中,动态注册Bean是一项非常实用的功能,它允许我们在应用运行时向Spring容器添加新的Bean定义。这种能力在很多场景下都是极其有用的,比如根据不同的环境配置加载不同的服务实现,或者在运行时根据某些...

    java *spring工具类 方便在非spring管理环境中获取bean

    java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...

    Spring如何获取Bean

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

    java spring工具类 方便在非spring管理环境中获取bean

    java spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取beanjava spring工具类 方便在非spring管理环境中获取bean...

    Java中Spring获取bean方法小结

    这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...

    第一章 Spring4 简介及获取Bean

    - 博文链接:https://1151461406.iteye.com/blog/2389888,这个链接可能包含有关Spring4入门和获取Bean的具体教程。 - 在线课程:如Coursera、Udemy等平台上的Spring课程。 - 开源项目:参与开源项目,了解Spring在...

    @PostConstruct注解用来获取springbean对象.txt

    获取springbean对象

    spring中的bean

    在本篇中,我们将深入探讨"Spring中的Bean"这一主题,包括Bean的定义、配置以及如何在实际应用中使用。 首先,我们需要理解什么是Spring中的Bean。在Spring中,Bean通常代表应用程序中的一个对象,这些对象由Spring...

    线程中获取spring 注解bean

    在提交任务时,可以将bean作为参数传递,或者在任务内部使用`ApplicationContextAware`接口获取应用上下文,从而获取bean。 4. **ApplicationContextAware**:让线程处理类实现`ApplicationContextAware`接口,...

    几种spring获取bean的方法.txt

    ### 几种Spring获取Bean的方法 #### 1. 通过`WebApplicationContext`获取Bean 在Web环境下,Spring提供了`WebApplicationContext`接口,它是`ApplicationContext`的子接口,专门用于Web应用。可以通过`...

    Spring Bean创建初始化流程.docx

    5. **获取Bean实例**: 在预实例化过程中,`getBean(beanName)`被调用,这是`AbstractBeanFactory`类中的一个方法,用于从Bean工厂中获取指定名称的Bean实例。 6. **实际获取Bean**: 进入`doGetBean()`方法,这...

    Spring获取Bean类

    Spring获取Bean类

    spring依赖注入bean

    在 Java 应用中,我们可以创建一个主类来启动应用程序,并从 Spring 容器中获取 Bean 实例。例如: ```java public class MainApp { public static void main(String[] args) { ApplicationContext context = new...

    Spring之动态注册bean的实现方法

    在 Spring 框架中,动态注册 Bean 是一个非常重要的功能,它允许开发者在应用程序运行时动态添加或删除 Bean,从而提高应用程序的灵活性和可维护性。下面我们将详细介绍 Spring 之动态注册 Bean 的实现方法。 动态...

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

    `@Autowired`注解会自动注入BeanFactory,由于它是静态的,所以在任何地方都可以直接通过`SpringWiredBean.beanFactory`获取Bean。 这种方法避免了在XML配置文件中添加额外的Bean声明,更加简洁。但是需要注意,...

    Spring中关于Bean的管理的课件

    4. **Spring的应用上下文(ApplicationContext)**:ApplicationContext是Spring的主要接口之一,它提供了获取Bean、处理消息和事件等功能,是Spring应用中的主要入口点。 5. **构造注入(constructor injection)*...

    获得spring里注册Bean的四种方法

    获取 Spring 里注册的 Bean 对象可以使用四种方法:继承 BaseDispatchAction、实现 BeanFactoryAware、使用 ApplicationContext、使用 @Autowired。每种方法都有其特点和应用场景,开发者可以根据实际情况选择合适的...

    spring IOC反射装载bean

    首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些配置文件通常以`beans.xml`的形式存在,其中包含了Bean的名称、类名、依赖关系和其他属性。例如,一个简单的Bean定义可能如下所示: ```xml &lt;bean id=...

    spring创建bean简单示例

    3. **加载配置并获取Bean**: 在Java代码中,使用`ClassPathXmlApplicationContext`加载XML配置文件,并通过Bean的ID获取并使用Bean实例。 ```java ApplicationContext context = new ...

Global site tag (gtag.js) - Google Analytics