Spring web应用下方便的获得bean(转)

Web filter中如何引用Spring的bean 今天写了写了阵微信公众号玩,Spring+Struts搭的,有个需求是签名验证,需要在本地缓存一个用户ticket,而这个获取ticket的逻辑在某个spring service中实现的。 而对所有的jsp页面,想要注入对应的信息,而且不配置struts的话,想了想,最好用filter。实现了filter之后,准备注入service,这个时候启动webproject发现,service为null 阅读详情

如果我们的系统不是分布式的(在分布式里,我一般自己加载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 com.nstc.cti.event;

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

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

public class GetBean 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;
    }

}

web.xml配置里:
<?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>
    <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>GetBeanServlet</servlet-name>
    <servlet-class>com.nstc.cti.event.GetBean</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>

红色也可以为:

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>



使用示例:

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

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

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

spring之bean的Scope 上篇文章较为详细了对各种情况下bean依赖的配置做了说明,但一直没有对Scope这个属性进行说明。本篇将一起学习。本文演示代码下载地址 当我们在xml配置文件中配置一个bean的定义的时候,可以认为是配置了一个模板,可以根据这个模板来生成很多个对象来满足整个应用程序的依赖关系,同时我们也可以配置对象的Scope。 Scope可以理解为SpringIOC容器中的对象应该处的限定场景或者说该对象的 阅读详情

相关推荐

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

转当web中应用spring框架时,获得spring初始化的bean和ServletContext

  http://floys1987.iteye.com/blog/372111 这些天,一直在边学习,边做东西,发现,慢慢的补上了不少知识。今天发现了一个很有用的技巧,希望能给不知道的人,一点帮助。 当在web启动后,spring已经初始化的bean,已经按照你的约束注入了。那么如何获取那些sigleton 的bean。 网上说, 可以用servlet来做,其实没有必要。 第一种方法,慢一般...

lan_13217的专栏 209

ROS2前置基础教程 | 使用CMakeLists.txt编译ROS2节点

答案是有的,那就是cmake工具。cmake通过调用CMakeLists.txt直接生成Makefile。 2.新建CMakeLists.txt 在新建,输入下面内容。 3.编译代码 我们一般会创建一个新的目录,运行cmake并进行编译,这样的好处是不会显得那么乱。 创建好文件夹,接着运行cmake指令,代表到上级目录找。 运行完cmake你应该可以在build目录下看到cmake自动生成的Makefile了,接着就可以运行make指令进行编译 运行完上面的指令,就可以在build目录下发现节点了。ROS2

生活不止眼前的苟且 1万+

Spring Web应用下获得bean

    由于最近一段时间忙得厉害,好久都没有发博了,今天忙里偷闲说几句。。。。。。    最近的项目一直在弄spring的东东,写点关于获得bean的操作。         如果我们的系统不是分布式的(在分布式里,我一般自己加载spring的配置文件),不是一般的application,通过自己加载Spring的配置文件的方式。而是一般的web应用,我们通过在web.xml里配置spring的

1230

大华/华睿工业相机(摄像头)链接电脑,并用OpenCV打开

睿科是大华旗下机器视觉子公司,现在工业相机一般是华睿在产,要下载驱动程序,要到华睿官网哪里下载。由于我的电脑没有摄像头,所以摄像头序列化为0,电脑的第一个摄像头默认为0,序列号是0,1,2,3……,你是什么接口连接的就选择什么, 建议直接全选。我这里选择第二个,下载后点击安装,的你要点击识别右侧设置,设置。这个过程很简单,故不赘述。打开你的设备会在右边显示。

qq_48050838的博客 1万+

解决windows10下无法安装.net framework 3.5(包括.net2.0和3.0)

入域电脑,win10系统中安装 .net framework 3.5(包括.net2.0和3.0)

God_me_1的博客 4万+

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

如果我们的系统不是分布式的(在分布式里,我一般自己加载spring的配置文件),不是一般的application,通过自己加载Spring的配置文件的方式。而是一般的web应用,我们通过在web.xml里配置spring的配置文件。我们怎么方便的得到一个Bean的实例呢?当然,web应用启动后,它已经创建好一个WebApplicationContext(这个是接口,其实也是ApplicationC

jimmee的专栏 2660

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下...

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下 CT Image with Window presets This is an example of displaying a ct image along with buttons to set ww/wc pres...

浩秦的博客 1839

Spring在应用中获得Bean的方法

一.使用ApplicationContext获得Bean         首先新建一个类,该类必须实现ApplicationContextAware接口,改接口有一个方法,public void setApplicationContext(ApplicationContext applicationContext)throws BeansException,也就是说框架会自动调用这个方法返回...

wjxbj的博客 454

从HPPC测试到Simulink仿真:锂电池二阶RC模型参数辨识完整流程

本文详细介绍了从HPPC测试到Simulink仿真的锂电池二阶RC模型参数辨识完整流程。通过HPPC测试获取实验数据,利用Simulink的Parameter Estimation工具进行参数辨识和模型验证,为BMS算法开发提供精确的电池模型。文章涵盖测试设计、数据预处理、模型搭建及工程应用等关键步骤,助力新能源电池研发。

whisky的博客 683

linux应用程序段错误调试

一、堆、栈 在分析段错误之前,先了解一下什么是堆?什么是栈? 堆:一般由开发者分配释放,如果没有释放,程序结束时,在有的OS中可能会被自动释放,分配方式类似于链表。堆的操作方式为,队列优先,先进先出的原则。 栈:由操作系统自动分配,存放函数的参数值,局部变量。栈的操作方式为,先进后出的原则。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。  PUSH:操作在堆栈的顶部加入一个元素...

农村种地人 1107

Spring中获得bean的方法

今天看到网上有转载的获得Spring Bean的方法,觉得值得珍藏,现摘录在此。 众所周知,Spring框架将DI模式发挥到了极至,因此,系统里面用Spring管理的Bean相互之间的获取是非常方便的,只要使用者提供一个setter方法并在配置文件中配置该属性就可以。但是,对于系统中非Spring框架管理的类,如果需要获取Spring管理的类,或者,程序中需要动态的根据Bean的i

园园的专栏 1万+

uniapp | vue2 | vue3 - 解决调用天地图功能服务时 http 网络请求报错 net::ERR ABORTED 503(Service Temporarily Unavailabl)

vue,uni-app,天地图,请求报错,503,请求失败,map.tianditu,天地图503,天地图请求503,接口503错误怎么办,vue天地图,uniAPP天地图,获取定位接口服务器报错503,获取当前定位,定位功能,IP属地定位,天地图服务器报错,如何解决报错,net::ERRABORTED503(ServiceTemporarilyUnavailabl),GET,POST,服务暂时不可用,react天地图,一直等待吗,报错怎么办,定位报错,轨迹,经纬度,天地图服务器503,在vue2

🏆 前端领域优质创作者 4436

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

 Spring web应用下怎么方便的获得bean?     如果我们的系统不是分布式的(在分布式里,我一般自己加载spring的配置文件),不是一般的application,通过自己加载Spring的配置文件的方式。而是一般的web应用,我们通过在web.xml里配置spring的配置文件。我们怎么方便的得到一个Bean的实例呢?当然,web应用启动后,它已经创建好一个WebApplicatio

xiaolang85的专栏 800

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring在web应用中获得Bean的方法

一:使用ApplicationContext获得Bean 首先新建一个类,该类必须实现ApplicationContextAware接口,改接口有一个方法,public void setApplicationContext(ApplicationContext applicationContext)throws BeansException , 也就是说框架会自动调用这个方法返回一个A

myfuturein的专栏 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

spring web应用中new出来的Bean实现属性注入的方法

在spring web应用中,几乎所有的Bean的生命周期都是由spring控制的。但有时候我们想在自己new出来的对象中注入spring管理的bean属性,该怎么办呢?

全全的专栏 1126

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring Bean 作用域

常见的 4 种作用域 Spring Bean 的默认作用域是 Singleton。一般通过注解 @Scope 自定义Bean的作用域。 Singleton 整个应用中,只创建一个实例。(默认) ConfigurableBeanFactory.SCOPE_SINGLETON Prototype 每次注入或通过Spring Application Context 获取时,都...

一个被IT搞的 1268

java 加载spring bean_Spring-搞定bean加载( 转)

spring的IOC非常的强大。。特别是管理Web项目中的自动加载。但是实际应用中,可能会碰到这样两类的问题:1.写UnitTest的时候,需要脱离容器,手动读取xml文件加载bean。2.在一个Web容器中,可能某个脱离了spring管理(也就是一个非bean)的类,需要感知并读取某个spring容易的bean。下面转了2篇文章,分别是对应上面2个问题的解决方案http://hi.baidu.c...

weixin_39629947的博客 239

Spring Bean

SpringBean是指 Spring IoC 容器管理的对象,通常是通过配置或注解声明的类实例。容器会在应用启动时创建这些 Bean 的实例,并根据需求将它们注入到其他组件中,实现对象的自动管理和依赖注入。Spring Boot 使用 Bean 来管理应用中的服务、数据源、控制器和其他核心组件。Spring Boot 的 Bean 是应用程序核心组件的容器化管理单元,通过注解和配置方式实现。

m0_66845605的博客 898

Jetty - 在集成Spring的J2SE应用程序中嵌入Jetty的Web功能(Web中获取Spring上下文中的Bean)

一、说明     如果开发了一个J2SE的应用程序,然后想用Web来完成一些的用户界面,但是在启动 Jetty 之前就已经创建和使用了 Spring 的 ApplicationContext,但这些Web的业务中也要依赖于 Spring 的 ApplicationContext,这样就会遇到一个问题:原有应用程序和新加Web不在同一个上下文,在Web中如何获取Spring中管理的Bean呢?

袭冷 562

Spring在web应用中获得Bean的方法 实现getBean方法

Spring在web应用中获得Bean的方法 实现getBean方法

I'm Zeus ! 8169

IDEA中利用Maven创建Web项目、为Web应用添加Spring框架支持、bean的创建于获取

  1 环境版本说明   Jdk : 1.8   Maven : 3.5    IDEA : 专业版 2017.2   2 环境准备   2.1 Maven安装及其配置   2.2 Tomcat安装及其配置   3 详细步骤   3.1 根据模板创建maven工程     file -&gt; new -&gt; project -&gt; maven -&gt; webapp     技巧0...

ahilll的博客 1326

Spring之Bean

Spring Bean 是由 Spring IoC 容器管理的对象。这些对象可以是普通的 Java 对象(POJO),也可以是各种服务、组件、数据访问对象等。Spring 通过配置文件(如 XML 配置文件)、注解或者 Java 代码的方式来定义和管理这些 Bean。一、基本信息类名:指定 Bean 的全限定类名,Spring 根据这个类名来实例化 Bean。作用域:singleton(单例):在整个 Spring 容器中只有一个实例。

梦想是很难很难的,所以先勇敢一点 1102

在spring的bean中获取ServletContext

  我的需求是获取spring开发的web项目在服务器上的绝对路径。  进而引申到我需要知道servletContext,因为servletContext有一个servletContext.getRealPath("/");方法,这个方法就能获取项目的绝对路径。  常规方式下我们如何获取servletContext呢?我们需要让我们的类继承HttpServlet类,然后获取servletC

The Last Song 的专栏 1万+

Spring中的Bean作用域有哪些

Spring中的BeanScope决定了容器在何时创建一个新的Bean实例以及何时重用现有实例。这对于控制应用程序中各个Bean的生命周期和状态非常重要。

2301_76166241的博客 1369
上一篇: spring3.1.1常用jar包
下一篇: 从程序员到CTO的Java技术路线图
wangshfa
博客等级 码龄17年 117粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值