文档章节

程序员下忍勇敢的进入了applicationContext的世界--2

昀杉votaa
 昀杉votaa
发布于 2015/07/06 19:15
字数 687
阅读 21
收藏 0

程序员是很吓人的一种动物,他们觉得自己是理科生,却时刻觉得自己是艺术家。

                                                                                                            ------来自2077年的一封信

 //---------------------------------------------------------------------
 // Implementation of ApplicationContext interface
 //---------------------------------------------------------------------

下面开始进入方法的世界饿,下面都是ApplicationContext接口的实现方法。

/**
  * Set the unique id of this application context.
  * <p>Default is the object id of the context instance, or the name
  * of the context bean if the context is itself defined as a bean.
  * @param id the unique id of the context
  */
 public void setId(String id) {
  this.id = id;
 }
 /**
  * Return the unique id of this application context.
  * @return the unique id of the context, or <code>null</code> if none
  */
 public String getId() {
  return this.id;
 }
 /**
  * Set a friendly name for this context.
  * Typically done during initialization of concrete context implementations.
  * <p>Default is the object id of the context instance.
  */
 public void setDisplayName(String displayName) {
  Assert.hasLength(displayName, "Display name must not be empty");
  this.displayName = displayName;
 }
 /**
  * Return a friendly name for this context.
  * @return a display name for this context (never <code>null</code>)
  */
 public String getDisplayName() {
  return this.displayName;
 }
 /**
  * Return the parent context, or <code>null</code> if there is no parent
  * (that is, this context is the root of the context hierarchy).
  */
 public ApplicationContext getParent() {
  return this.parent;
 }
 public ConfigurableEnvironment getEnvironment() {
  return this.environment;
 }

一些基本的get,set方法。

/**
  * {@inheritDoc}
  * <p>Default value is determined by {@link #createEnvironment()}. Replacing the
  * default with this method is one option but configuration through {@link
  * #getEnvironment()} should also be considered. In either case, such modifications
  * should be performed <em>before</em> {@link #refresh()}.
  * @see org.springframework.context.support.AbstractApplicationContext#createEnvironment
  */
 public void setEnvironment(ConfigurableEnvironment environment) {
  this.environment = environment;
 }

这个方法与getEnvironment方法等价,要在refresh方法被调用前使用。

 /**
  * Return this context's internal bean factory as AutowireCapableBeanFactory,
  * if already available.
  * @see #getBeanFactory()
  */
 public AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException {
  return getBeanFactory();
 }

返回context中的beanFactory,转换成AutowireCapableBeanFactory。

/**
  * Return the timestamp (ms) when this context was first loaded.
  */
 public long getStartupDate() {
  return this.startupDate;
 }

返回时间戳。

 /**
  * Publish the given event to all listeners.
  * <p>Note: Listeners get initialized after the MessageSource, to be able
  * to access it within listener implementations. Thus, MessageSource
  * implementations cannot publish events.
  * @param event the event to publish (may be application-specific or a
  * standard framework event)
  */
 public void publishEvent(ApplicationEvent event) {
  Assert.notNull(event, "Event must not be null");
  if (logger.isTraceEnabled()) {
   logger.trace("Publishing event in " + getDisplayName() + ": " + event);
  }
  getApplicationEventMulticaster().multicastEvent(event);
  if (this.parent != null) {
   this.parent.publishEvent(event);
  }
 }

对所有的监听者发布事件,监听在MessageSource之后才被初始化,以便用监听的实现来访问,(监听者模式)。

 /**
  * Return the internal ApplicationEventMulticaster used by the context.
  * @return the internal ApplicationEventMulticaster (never <code>null</code>)
  * @throws IllegalStateException if the context has not been initialized yet
  */
 private ApplicationEventMulticaster getApplicationEventMulticaster() throws IllegalStateException {
  if (this.applicationEventMulticaster == null) {
   throw new IllegalStateException("ApplicationEventMulticaster not initialized - " +
     "call 'refresh' before multicasting events via the context: " + this);
  }
  return this.applicationEventMulticaster;
 }
 /**
  * Return the internal LifecycleProcessor used by the context.
  * @return the internal LifecycleProcessor (never <code>null</code>)
  * @throws IllegalStateException if the context has not been initialized yet
  */
 private LifecycleProcessor getLifecycleProcessor() {
  if (this.lifecycleProcessor == null) {
   throw new IllegalStateException("LifecycleProcessor not initialized - " +
     "call 'refresh' before invoking lifecycle methods via the context: " + this);
  }
  return this.lifecycleProcessor;
 }
 /**
  * Return the ResourcePatternResolver to use for resolving location patterns
  * into Resource instances. Default is a
  * {@link org.springframework.core.io.support.PathMatchingResourcePatternResolver},
  * supporting Ant-style location patterns.
  * <p>Can be overridden in subclasses, for extended resolution strategies,
  * for example in a web environment.
  * <p><b>Do not call this when needing to resolve a location pattern.</b>
  * Call the context's <code>getResources</code> method instead, which
  * will delegate to the ResourcePatternResolver.
  * @return the ResourcePatternResolver for this context
  * @see #getResources
  * @see org.springframework.core.io.support.PathMatchingResourcePatternResolver
  */
 protected ResourcePatternResolver getResourcePatternResolver() {
  return new PathMatchingResourcePatternResolver(this);
 }

各种返回各种取。

© 著作权归作者所有

昀杉votaa
粉丝 0
博文 7
码字总数 13258
作品 0
大庆
私信 提问
为什么程序员的社会地位不高?

到目前为止,在过去60年中在世界排名前20的国家中,没有哪条街是以程序员或者计算机科学家的名字命名的。 没有任何一个世界主要城市拥有程序员或者计算机科学家的雕像。 没有程序员或者计算机...

虫虫
2012/01/01
22.1K
74
2017-12-30 勇敢做自己

今天是我第一次写日记,之前很想写,但是每次到最后都没有去做,成为了马云先生所讲的晚上想想千条路,早上起来走原路的人。我想改变这样的自己,今天是第一天,希望我能坚持下去。 我人生中...

想成为一个积极的Raven
2017/12/30
0
0
May 2015〡武汉Open Party 小鲜肉携大波干货来袭

2015年五月Open Party和武汉酷热的天气一样来袭了!!! 继“老腊肉”们的《十年的程序人生》后,Open Party迎来了三位全新的“小鲜肉”。 本期三位Speaker来头可不小,他们带来的话题是否能...

jobthoughtworks
2015/05/20
4
0
May 2015〡武汉Open Party 小鲜肉携大波干货来袭

2015年五月Open Party和武汉酷热的天气一样来袭了!!! 继“老腊肉”们的《十年的程序人生》后,Open Party迎来了三位全新的“小鲜肉”。 本期三位Speaker来头可不小,他们带来的话题是否能...

jobthoughtworks
2015/05/20
170
1
给 22 岁的自己六点建议

本文转载自公众号 stormzhang 阅读文本大概需要 2.8 分钟。 有读者给我留言,问我这么一个问题: 张哥,我今年 22 岁,一位大四实习生,明年毕业。当知道你才 28 岁时,很是惊讶,对您的经历...

bjweimengshu
2017/12/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
808
11
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
15
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部