Context在Java中的出现是如此频繁。但是说真的,包括我在内的很多人也不知道context是什么意思,就如(1+1为什么等于2)一般。看了相关的资料,说说我的看法吧。
在 java 中, 常见的 Context 有很多,像:Context,ServletContext,ActionContext,ServletActionContext,ApplicationContext,PageContext,SessionContext ... 那么, Context 究竟是什么东西呢?直译是上下文、环境的意思。比如像: "今天我收到了一束花, 男朋友送的!" 又或者 "今天我收到了一束花, 送花的人送错了的!" 同样是收到一束花,在不同的上下文环境中表达的意义是不一样的。 同样的,Context 其实也是一样, 它离不开所在的上下文环境, 否则就是断章取义了。 另外, 在网络上也有些人把 Context 看成是一些公用信息或者把它看做是一个容器的,个人觉得这种解释稍好。
先来举几个JAVA中用到Context的例子
(1)JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信息。请看下面的代码
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource dataSource = (DataSource)envContext.lookup("jdbc/gossip");
这是一段获取数据库实例的远程调用类的代码。在这里面通过InitialContext中JNDI注册的名称“jdbc/gossip”来获得Context 对象。这和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翻译成“上下文”只是不直观罢了,不过也没大错。我们来看看中文的“上下文”是什么意思。我们常说听话传话不能“断章取义”,而要联系它的“上下文”来看。比如,小丽对王老五说“我爱你”,光看这句还以为在说情话呢。但一看上下文--“虽然我爱你,但你太穷了,我们还是分手吧”,味道就完全变了。从这里来看“上下文”也有“环境”的意思,就是语言的环境。