968 Star 2.1K Fork 1.1K

TinyFramework / tiny

 / 详情

tiny容器与spring容器兼容问题

待办的
创建于  
2018-04-13 09:37

使用tiny3.4.7版本是,当在tiny容器前启动spring容器会造成启动错误。
具体原因为tiny所提供的ApplicationStartupListener类中为了兼容springboot
容器调整内部代码所造成,具体代码如下,当从servlet容器中可获取spring容器时
即认为为springboot启动模式,代码健壮性存在问题。因此建议tiny产品组进行优化
便于兼容tiny容器作为spring子容器或者spring容器与tiny容器隔离的场景。

private void loadSpringBeans(String applicationConfig,ServletContext servletContext) {

	logger.logMessage(LogLevel.INFO, "加载Spring Bean文件开始...");
	Object rootContext = servletContext.getAttribute(
			WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
	if(rootContext==null){//之前未定义spring容器,则创建tiny框架相关的spring容器
		BeanContainerFactory.initBeanContainer(ExtendsSpringBeanContainer.class
				.getName());
		ExtendsSpringBeanContainer beanContainer = (ExtendsSpringBeanContainer) BeanContainerFactory
				.getBeanContainer(getClass().getClassLoader());
		beanContainer.setApplicationContext(createWebApplicationContext());
		FileResolver fileResolver = FileResolverFactory.getFileResolver();
		FileResolverUtil.addClassPathPattern(fileResolver);
		loadFileResolverConfig(fileResolver, applicationConfig);
		fileResolver.addFileProcessor(new SpringBeansFileProcessor());
		fileResolver.addFileProcessor(new ConfigurationFileProcessor());
		fileResolver.resolve();
	}else{
		BeanContainerFactory.initBeanContainer(SpringBootBeanContainer.class
				.getName());
		SpringBootBeanContainer beanContainer = (SpringBootBeanContainer) BeanContainerFactory
				.getBeanContainer(getClass().getClassLoader());
		beanContainer.setApplicationContext( (ApplicationContext) rootContext);
		FileResolver fileResolver = FileResolverFactory.getFileResolver();
		FileResolverUtil.addClassPathPattern(fileResolver);
		loadFileResolverConfig(fileResolver, applicationConfig);
		fileResolver.addFileProcessor(new ConfigurationFileProcessor());
		fileResolver.resolve();
	}
	logger.logMessage(LogLevel.INFO, "加载Spring Bean文件结束。");
}

评论 (0)

liangjf85 创建了任务

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
Java
1
https://gitee.com/tinyframework/tiny.git
git@gitee.com:tinyframework/tiny.git
tinyframework
tiny
tiny

搜索帮助