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

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

                                                                                                            ------来自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);
 }

各种返回各种取。

转载于:https://my.oschina.net/stuspring/blog/475303

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值