前几天写web项目的时候,用到了spring mvc。

但是又写bean。我要在代码里面生成,而这个bean里面,又有一些属性是通过spring注入的。

所以,只能通过ApplicationContext来获取。

在servlet里面获取ApplicationContext其实可以通过spring提供的方法:

1
WebApplicationContextUtils.getWebApplicationContext(ServletContext)

来获取。

这个方法前提是要在web.xml里面即一个listener:

1
2
3
4
5
6
7
8
9
10
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:spring-servlet.xml,
            classpath:applicationContext.xml
        </param-value>
    </context-param>
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

不过这样子只能在servlet里面获取。

如果要在servlet外获取ApplicationContext呢?

其实可以封装一下的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package me.idashu.code.util;
 
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
 
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
/**
 * 描述:ApplicationContext容器
 *
 * @author: dashu
 * @since: 13-5-11
 */
public class AppContext implements ServletContextListener {
 
    private static WebApplicationContext springContext;
 
    public AppContext() {
        super();
    }
 
    public void contextInitialized(ServletContextEvent event) {
        springContext = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
 
    }
 
 
    public void contextDestroyed(ServletContextEvent event) {
    }
 
    public static ApplicationContext getApplicationContext() {
        return springContext;
    }
 
}

还需要在web.xml里面再加条记录:

1
2
3
<listener>
        <listener-class>me.idashu.code.util.AppContext</listener-class>
    </listener>

其实就是在content初始化的时候,把ApplicationContext保存起来,下次方便调用。

spring中获取applicationContext(2)的更多相关文章

  1. spring中获取applicationContext

    常用的5种获取spring 中bean的方式总结: 方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXm ...

  2. spring中获取ApplicationContext对象的技巧,含源码说明

    第一步,实现接口ApplicationContextAware,重写setApplicationContext方法,下方代码标红的地方,绿色部分 可以通过声明来进行存储到本类中. @Component ...

  3. spring mvc在Controller中获取ApplicationContext

    spring mvc在Controller中获取ApplicationContext web.xml中进行正常的beans.xml和spring-mvc.xml的配置: 需要在beans.xml中进行 ...

  4. spring中获取dao或对象中方法的实例化对象

    spring中获取dao的中方法的实例化对象: //获取应用上下文对象 ApplicationContext ctx = new ClassPathXmlApplicationContext(&quo ...

  5. Spring中获取被代理的对象

    目录 Spring中获取被代理的对象 获取Spring被代理对象什么时候可能会用到? Spring中获取被代理的对象 Spring中获取被代理的对象 ### 获取Spring被代理对象的JAVA工具类 ...

  6. spring中获取当前项目的真实路径

    总结: 方法1: WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext ...

  7. spring 代码中获取ApplicationContext(@AutoWired,ApplicationListener)

    2017年度全网原创IT博主评选活动投票:http://www.itbang.me/goVote/234    学习spring框架时间不长,一点一滴都得亲力亲为.今天忽然觉得老是通过@Autowir ...

  8. Spring中获取对象

    Spring是一个非常主流,而且是好用的框架.提供管理对象的容器,提供事务的支持,缓存,权限认证(往往不用).用来集成hibernate等.而管理对象的生命周期是其中一个非常重要的功能.在Spring ...

  9. Spring +quartz获取ApplicationContext上下文

    job存在数据库中,能够进行动态的增增删改查,近期遇到了怎样获取ApplicationContext上下文的问题.解决的方法例如以下 applicationContext-quartz.xml < ...

随机推荐

  1. [翻译]CSS3 Media Queries

    Media Queries Official Manual:http://www.w3.org/TR/css3-mediaqueries/ 原文链接:http://www.smashingmagazi ...

  2. Spine输出资源一键入Unity3D工具代码

    之前预研过2D骨骼动画编辑工具SPINE,感觉其比cocosStudio及Unity3D自带的骨骼动画编辑器(原生Sprite Tree或Uni2D)要更适合有3DSMax习惯的美术,即Spine更容 ...

  3. 使用DbTableColumnWeb项目简要

    项目说明 环境:Vs2013 .Net4.5 MVC5 主要功能:直观编辑表字段说明:生成表对应的实体类:生成数据库表文档说明: 初衷:在开发过程中,经常会遇到同事询问表字段含义.手动编写表对应的实体 ...

  4. C#treeView控件单击事件选中节点滞后问题解决方法

    问题描述:在treeView的Click事件中,选中的节点SelectedNode并不是您刚才点击的节点,总是上一次选中的节点,节点选中滞后的问题. 解决方案:在treeView的MouseDown事 ...

  5. NetCore入门篇:(二)Net Core项目创建

    一.新建项目 1.选择菜单:文件 -> 新建 -> 项目 2.选择模板:NET Core -> ASP.NET Core Web 应用程序,输入名称 3.选择框架:ASP.NET C ...

  6. 关于ORACLE的字符窜存储(未完善,欢迎补充)

    oracle中常见的用于存储字符串的数据类型有: 数据类型 是否定长 最多存储数 效率排行 备注 是否oracle特有 英文占位 中文占位 char 是 2000 比VARCHAR2稍高 char的长 ...

  7. wpf 窗体翻页效果

    点击设置翻页,取消翻回来 1.xaml <Window x:Class="_3D翻页动画.MainWindow" xmlns="http://schemas.mic ...

  8. C# Task

    Task是一种基于任务的编程模型.它与thread的主要区别是,它更加方便对线程进程调度和获取线程的执行结果. Task类和thread类,前者接收的是Action委托类型,后者接收的是Func委托类 ...

  9. Json/XML序列化和反序列化

    1.json序列化和反序列化 序列化是将对象状态转换为可保持或传输的格式的过程; 反序列化,它将流转换为对象; 1)Json.Net 推荐使用Json.Net类库,需要引入的命名空间; 序列化:Jso ...

  10. FTP 作业整理

    一.FTP 客户端 与服务器端(没有解决黏包问题的代码) 服务器端设置 import socket import json ADDR = () sk =socket.socket() sk.bind( ...