`
gyl868
  • 浏览: 171051 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring web应用下怎么方便的获得bean?

阅读更多
如果我们的系统不是分布式的(在分布式里,我一般自己加载spring的配置文件),不是一般的application,通过自己加载Spring的配置文件的方式。而是一般的web应用,我们通过在web.xml里配置spring的配置文件。我们怎么方便的得到一个Bean的实例呢?当然,web应用启动后,它已经创建好一个WebApplicationContext(这个是接口,其实也是ApplicationContext类型的,因为WebApplicationContext继承自ApplictionContext这个接口)类型的实例对象,通过org.springframework.web.context.support.WebApplicationContextUtils里的
getWebApplicationContext(ServletContext sc)可以得到这个对象的引用(这个就像我们一般的java application下得到ApplicationContext类型的引用一样),我们就可以通过它的getBean方法得到我们的bean实例了。但是这里有个问题getWebApplicationContext(ServletContext sc)这个方法的参数ServletContext代表的是你web应用的环境,也就是说,也就是说web应用环境下特有的。这个时候如果你想得到一个bean的话,必须要有这个ServletContext对象存在,如果你每个类里都写一个方法来接受ServletContext对象,从而得到WebApplicationContext类型实例的引用,之后再得到bean,进行你要的操作,这个是不是很麻烦?这个不是要写很多代码么?我觉得可以把获得bean的这个操作的功能代码放在一个Servlet里,让这个Servlet在web应用启动的时候加载,我们之后把这个Servlet当作普通类使用,调用里面的getBean方法就可以了。这个servlet的代码如下:

package jimmee.cn.edu.zju.pdm.framework.server;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class GetBeanServlet extends HttpServlet
...{

    private static WebApplicationContext context;
   
    public void init() throws ServletException
    ...{
        context=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
    }
   
    public static Object getBean(String id)
    ...{
        Object bean = context.getBean(id);
       
        return bean;
    }
}



.Spring在web应用

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Spring的配置 -->
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/beans.xml</param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>
    <servlet>
        <servlet-name>springInitServlet</servlet-name>
        <servlet-class>
            org.springframework.web.context.ContextLoaderServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>log4jInitServlet</servlet-name>
        <servlet-class>
            org.springframework.web.util.Log4jConfigServlet
        </servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
  <servlet>
    <servlet-name>GetBeanServlet</servlet-name>
    <servlet-class>jimmee.cn.edu.zju.pdm.framework.server.GetBeanServlet</servlet-class>
      <load-on-startup>3</load-on-startup>
  </servlet>
   <!--Spring配置结束  -->
  <servlet-mapping>
    <servlet-name>GetBeanServlet</servlet-name>
    <url-pattern>/servlet/GetBeanServlet</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
使用示例:

假使我有一个Person的类,属性有name和age,在spring配置文件里配置的id为“person”

你在你的servlet或者jsp想得到这个实例的时候,直接这么做就可以了:

Person person=(Person)GetBeanServlet.getBean("person");



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jimmee/archive/2008/03/11/2170915.aspx
分享到:
评论

相关推荐

    spring bean的生命周期

    Spring Bean的生命周期是Spring框架中的核心概念,它涵盖了Bean从创建到销毁的全过程。了解这一过程对于优化应用程序的性能和管理资源至关重要。在Spring中,Bean的生命周期主要分为以下几个阶段: 1. **初始化阶段...

    Spring Web MVC外文翻译

    通过使用 Spring 的 IoC 容器,Spring Web MVC 可以高效地管理 Web 应用程序中的依赖关系,使得整个开发过程更加简洁和高效。 了解 Spring Web MVC 的核心概念和架构设计,对于理解和开发基于 Spring 的 Web 应用...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    在测试场景下,可以使用`@SpringBootTest`注解启动整个Spring Boot应用,然后使用`@Autowired`注入需要的bean进行测试。 8. **Bean的作用域**: Spring支持多种bean的作用域,如Singleton(单例)、Prototype...

    Spring整合Jetty开发web应用的例程

    这个例程展示了如何利用Spring来启动和管理Jetty服务器,以构建和运行Web应用程序。下面将详细介绍这一过程中的关键知识点。 1. **Spring框架**:Spring是一个全面的Java企业级应用开发框架,提供了依赖注入...

    spring依赖注入bean

    综上所述,Spring 的依赖注入和 Bean 管理不仅限于 Web 应用,也可以方便地应用于 Java Application 中,通过 XML 或注解配置来实现组件间的解耦,提高代码质量。这个示例项目 `test` 可能包含了实现上述功能的代码...

    Spring bean 管理

    在Spring中,Bean的管理包含多个方面:创建Bean实例、配置Bean属性、控制Bean的生命周期以及Bean作用域的定义。接下来将详细解释这些知识点。 1. Spring的工厂类: Spring通过工厂模式设计了一系列工厂类来创建对象...

    spring-aware接口实现与bean作用域(spring多容器层面)

    在多个项目整合且跨越Spring容器的情况下,获取Bean的实现方式可能更复杂。可以通过Spring的`ConfigurableApplicationContext`接口的`getBeanFactory()`方法获取`BeanFactory`,然后使用`BeanFactory`的`...

    Spring 框架 web 5.0.4.RELEASE jar

    9. **WebSocket支持**:Spring 5.x引入了WebSocket支持,可以方便地创建双向通信的Web应用程序,提高实时性。 10. **Spring Boot集成**:Spring框架与Spring Boot的结合使用,简化了Web应用的初始化和配置过程,...

    spring自动扫描和管理Bean的示例

    在Web应用中,这类Bean通常负责处理用户请求,并调用业务逻辑。 当Spring容器启动时,可以通过`&lt;context:component-scan&gt;`标签在XML配置文件中指定需要扫描的包。例如: ```xml ``` 这会告诉Spring从`...

    Spring框架bean工具,在多线程环境下手动创建bean

    一个Spring框架的bean工具,可以在多线程环境下手动创建bean。使用时请注意在spring配置文件下加入&lt;bean id="springBeanUtils" class="com.hujin.common.util.SpringBeanUtils"/&gt;

    Spring 注解学习手札(一) 构建简单Web应用

    在本篇《Spring注解学习手札(一)构建简单Web应用》中,我们将深入探讨如何使用Spring框架的注解来构建一个基本的Web应用程序。Spring框架是Java开发中的核心工具,尤其在企业级应用中广泛应用。它简化了依赖注入、...

    第一章 Spring4 简介及获取Bean

    - **Web开发**:Spring MVC和Spring WebFlux用于构建响应式和非阻塞式的Web应用。 - **测试**:Spring Test模块支持单元测试和集成测试,简化了测试代码的编写。 **学习资源** 为了深入理解Spring框架,可以参考...

    spring管理bean应用实例代码

    Spring支持配置多个环境(如开发、测试、生产)的Bean,通过`@Profile`注解指定Bean在哪个环境下生效。 以上就是Spring管理Bean的一些主要知识点,实际应用中,开发者可以根据需求选择合适的配置方式,利用Spring...

    41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】

    1. 自动扫描:Spring Boot可以通过`@ComponentScan`注解自动扫描特定包及其子包下的所有`@Component`家族注解的类。在启动类上添加此注解,Spring会自动发现并注册这些Bean。 ```java @SpringBootApplication @...

    Spring Boot技术知识点:Bean装配1

    在Spring Boot框架中,Bean装配是核心概念之一,它涉及到如何管理和组织应用程序中的对象。Spring Boot简化了传统Spring应用的初始化过程,通过自动配置和组件扫描使得Bean的装配变得更加便捷。本文将深入探讨Spring...

    Java中Spring获取bean方法小结

    - **通过`@Configuration`和`@ComponentScan`**:Spring 3.0引入了基于Java的配置,允许在Java类中定义Bean并扫描特定包下的组件。 - **使用`Prototype`作用域的Bean**:如果一个Bean是Prototype作用域,每次请求...

    groovy+spring在web中的应用

    在描述中提到的博客链接(由于实际无法访问,这里仅做理论分析),可能会详细探讨如何在实际项目中结合Groovy和Spring进行Web开发,包括Groovy的脚本配置、Bean定义、以及可能的Grails框架应用实例。 标签"源码"和...

    Spring之核心容器bean

    其他作用域主要适用于Web应用。 **生命周期管理** Spring容器对bean的生命周期进行管理,包括初始化、活跃期和销毁。你可以为bean定义初始化方法和销毁方法,容器会在适当的时候调用。此外,还可以通过实现...

    在Servlet直接获取Spring框架中的Bean.docx

    这个bean的作用是在Web应用启动时,将特定的Bean导出到ServletContext作为属性。例如: ```xml &lt;bean class="org.springframework.web.context.support.ServletContextAttributeExporter"&gt; &lt;entry key="bean1...

    线程中获取spring 注解bean

    6. **RequestScope**:在Web应用中,如果bean需要在一次HTTP请求的生命周期内保持一致,可以使用`@Scope("request")`。这样,每次请求都会创建新的bean实例,而不会影响其他线程。 理解并熟练掌握这些方法,有助于...

Global site tag (gtag.js) - Google Analytics