最近学习中经常看到
Context
,没能明白中文含义,一番搜索后看到此文,颇为
实在,特转之
Context
在
Java
中的出现是如此频繁,但其中文翻译“上下文”又是如此诡异
拗口,
因此导致很多人不是很了解
Context
的具体含义是指什么,
所以很有必要
来深究一下这词的含义。先来举几个
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("configur
ation.xml");
Object obj= ctx.getBean("Object_Name");
从上面的代码,我很能体会到
Context
所代表的意义:公用信息、环境、容
器
....
。
所以我觉得
Context
翻译成上下文并不直观,
按照语言使用的环境,
翻
译成“环境”、“容器”可能更好。
把
Context
翻译成“上下文”只是不直观
罢了,
不过也没大错。
我们来看看中文的“上下文”是什么意思。
我们常说听话
传话不能“断章取义”,而要联系它的
“上下文”来看。比如,小丽对王老五
说“我爱你”,光看这句还以为在说情话呢。但一看上下文--“虽然我爱你,
但你太穷了,我们还是分手吧”,味道就完全
变了。从这里来看“上下文”也
有“环境”的意思,就是语言的环境。
上下文其实是一个抽象的概念。我们常见的上下文有
Servlet
中的
pageContext
,访问
JNDI
时候用的
Context
。写过这些代码的人可能比
较容易
理解,其实他们真正的作用就是承上启下。比如说
pageContext
他的上层是
WEB
容器,下层是你写的那个
Servlet
类,
pageContext
作为中间的通道让
Servlet
和
Web
容器进行交互。再比如访问
JNDI
的
Context
,他的上层是
JNDI
服务器(可
能是远程的),下层是你的应用程序,他的作用也是建立一个通道
让你能访问
JNDI
服务器,
同时也让
JNDI
服务器接受你的请求,
同样起到交互作
用。
所谓上下文,它是用来存储系统的一些初始化信息,例如在
jboss
中通过配
置文件指定了数据源,
那么在
jboss
启动的时候就把这个文件的相关信息上下文
中,
于是在我们使用这个数据源的时候,
就需要先获得系统的上下文,
然后再通
过一定的方式将数据源取出来。
至于在系统启动时,
是如何将这些初始化信息加
载到
上下文中,而上下文在程序中具体又是以什么形式体现的,应该随着系统
的不同而不同。