代码拉取完成,页面将自动刷新
使用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文件结束。");
}