tapestryspringbeanfactoryholderimpl.java

来自「这是本人在学习T4SH框架时」· Java 代码 · 共 60 行

JAVA
60
字号
package com.zxx.common.util;
/**
 * 总体功能描述: 通过hivemind注入获取spring的bean容器
 * <p>版权所有:中企动力
 * <p>未经本公司许可,不得以任何方式复制或使用本程序任何部分
 * @author 陶维
 * Created on 2006-08-31
 */
import org.apache.hivemind.events.RegistryShutdownListener;
import org.apache.hivemind.lib.impl.SpringBeanFactoryHolderImpl;
import org.apache.tapestry.web.WebContext;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.context.WebApplicationContext;

public class TapestrySpringBeanFactoryHolderImpl extends
		SpringBeanFactoryHolderImpl implements RegistryShutdownListener {

	private WebContext context;

	public BeanFactory getBeanFactory() {
		if(super.getBeanFactory()==null) {
			super.setBeanFactory(getWebApplicationContext(this.getContext()));
		}
		return super.getBeanFactory();
	}

	public void registryDidShutdown() {
		((ConfigurableApplicationContext) super.getBeanFactory()).close();
	}

	private static WebApplicationContext getWebApplicationContext(WebContext wc) {
		Object obj = wc
				.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
		if (obj == null) {
			return null;
		}
		if (obj instanceof RuntimeException) {
			throw (RuntimeException) obj;
		}
		if (obj instanceof Error) {
			throw (Error) obj;
		}
		if (!(obj instanceof WebApplicationContext)) {
			throw new IllegalStateException("获取不到WebApplicationContext对象:"
					+ obj);
		}
		return (WebApplicationContext) obj;
	}

	public WebContext getContext() {
		return context;
	}

	public void setContext(WebContext context) {
		this.context = context;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?