java中的context

本文通过具体示例解释了Java中Context的概念及其应用场景,包括在JNDI和Spring框架中的使用方式,帮助读者理解Context作为环境和容器的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ContextJava中的出现是如此频繁.但是今天有人问我context是什么意思,当倒晕倒,说真的,我也不知道context是什么意思.就如人家问我(1+1为什么等于2).经过cotext.我行说说我的看法吧

先来举几个JAVA中用到Context的例子

(1)JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信息。请看下面的代码

InitialContext ic=new InitialContext();

RMIAdaptor server=(RMIAdaptor)ic.lookup("jmx/invoker/RMIAdaptor");

这是一段JBoss中获取MBean的远程调用类的代码。在这里面通过InitialContext中JNDI注册的名称“jmx/invoker/RMIAdaptor”来获得RMIAdaptor

对象。这和JAVA集合中的MAP有点象,有一个String的key,key对映着它的对象。

(2)再来看看下面Spring中最常见的几句代码。ApplicationContext 是内含configuration.xml配置文件的信息,使得可以通过getBean用名称得到相应的注册对象。

ApplicationContext ctx= new FileSystemXmlApplicationContext("configuration.xml");

Object obj= ctx.getBean("Object_Name");

从上面的代码,我很能体会到Context所代表的意义:公用信息、环境、容器....。所以我觉得Context翻译成上下文并不直观,按照语言使用的环境,翻译成“环境”、“容器”可能更好。

Context翻 译成“上下文”只是不直观罢了,不过也没大错。我们来看看中文的“上下文”是什么意思。我们常说听话传话不能“断章取义”,而要联系它的“上下文”来看。 比如,小丽对王老五说“我爱你”,光看这句还以为在说情话呢。但一看上下文--“虽然我爱你,但你太穷了,我们还是分手吧”,味道就完全变了。从这里来看 “上下文”也有“环境”的意思,就是语言的环境。

PS

 上下文其实是一个抽象的概念。我们常见的上下文有Servlet中的pageContext,访问JNDI时候用的Context。写过这些代码的人可能比较容易理解,其实他们真正的作用就是承上启下。比如说pageContext他的上层是WEB容器,下层是你写的那个Servlet类,pageContext作为中间的通道让ServletWeb容器进行交互。再比如访问JNDIContext,他的上层是JNDI服务器(可能是远程的),下层是你的应用程序,他的作用也是建立一个通道让你能访问JNDI服务器,同时也让JNDI服务器接受你的请求,同样起到交互作用。


转载于:https://my.oschina.net/leohouse/blog/654940

### Java 中 `Context` 的使用方法和示例 在Java编程中,特别是在某些框架或库内,`Context` 类用于存储键值对数据,这些数据可以在程序的不同部分之间共享。对于QLExpress中的`DefaultContext<String, Object>`而言,该对象主要用于向表达式引擎提供变量及其对应的值。 ```java public class QLExpressExample { public static void main(String[] args) throws Exception { ExpressRunner runner = new ExpressRunner(); // 创建并初始化上下文环境,默认实现为 DefaultContext DefaultContext<String, Object> context = new DefaultContext<>(); context.put("a", 1); context.put("b", 2); context.put("c", 3); String express = "a + b * c"; // 定义要解析执行的表达式 // 执行表达式的求解过程,并获取返回的结果 Object result = runner.execute(express, context, null, true, true)[^1]; System.out.println("Expression Result: " + result); } } ``` 上述代码展示了如何创建一个名为`context`的对象来保存三个整数类型的参数(`a`, `b`, 和 `c`),并将它们传递给表达式解释器以便于后续的操作处理。这里使用的`put()`函数允许将任意数量的关键字-数值组合加入到当前的作用域里去;而当调用`runner.execute(...)`的时候,则会自动查找匹配的名字从而读取相应的属性值参与运算逻辑。 值得注意的是,在不同的场景和技术栈下,“Context”的具体形式可能会有所差异,比如Spring Framework里的ApplicationContext或者Servlet API下的ServletContext等都属于广义上的“上下文”。不过就本例子来说,重点在于理解它是用来承载临时性的状态信息的一个容器而已。 #### 关联概念说明 - **作用范围**:通常情况下,`Context`内的条目只在其声明的有效期内有效。 - **线程安全**:取决于具体的实现方式,有些可能支持多线程并发访问而不需额外同步措施。 - **生命周期管理**:应考虑何时清除不再需要的数据项以免造成内存泄漏等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值