1. Guzz是什么?
2. 感觉Guzz的资料还是太少,但是还是有一篇很完整的帮助文档:
http://code.google.com/p/guzz/wiki/TutorialGuzzXml?wl=zh-Hans
3. 自己学习Guzz的时间也不长,由于资料比较少,所以就只有直接看源码,在这里记录下过程,供以后查看。
4. Guzz容器初始化的流程图:
5. 接着对应着流程图来查看源码:
5.1 首先servlet容器在初始化的时候会读取到我们在web.xml中的配置:
<listener> <listener-class> org.guzz.web.context.spring.GuzzWithSpringContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
所以直接就会执行到GuzzWithSpringContextLoaderListener。
5.2 在GuzzWithSpringContextLoaderListener中,首先去初始化了spring的容器,由于我们在applicationContext.xml中配置了guzzContext:
<!--GUZZ声明--> <bean id="guzzContext" class="org.guzz.web.context.spring.GuzzContextBeanFactory" factory-method="createGuzzContext"> <constructor-arg> <value>classpath:guzz.xml</value> </constructor-arg> </bean>
在spring初始化的时候肯定是会创建guzzContext对象的,所以进入到了GuzzContextBeanFactory,只有一个方法把guzz.xml又传入到Configuration,然后调用newGuzzContext()
public static GuzzContext createGuzzContext(Resource springResource) throws Exception{ File file = springResource.getFile() ; if(file == null){ throw new IOException("file is null. spring resource:" + springResource) ; } return new Configuration(file.getAbsolutePath()).newGuzzContext() ; }
在newGuzzContext中创建了guzz中很重要的一个类对象GuzzContextImpl,然后调用了initFromMainConfig,传入了一个Resource(其实也就是guzz.xml)
public GuzzContext newGuzzContext() throws Exception{ GuzzContextImpl gf = new GuzzContextImpl() ; gf.initFromMainConfig(this.config) ; if(autoCloseResource){ CloseUtil.close(config) ; } return gf ; }
5.3 在initFromMainConfig就是主要的初始化过程,主要是解析guzz.xml,初始化数据库数据类型,连接ConfigServer读取配置,初始化Service,初始化事务管理。内容很多,会在后面文章分析。
5.4 在完成了GuzzContextImpl后然后就会回到GuzzWithSpringContextLoaderListener,然后把spring容器通过SpringExtendedBeanFactory这个对象set给GuzzContextImpl,接着就是在创建ContextLoader对象,通过initGuzzContext方法把GuzzContextImpl对象放入到服务器的ServletContext中。
ApplicationContext applicationContext = org.springframework.web.context.ContextLoader.getCurrentWebApplicationContext() ; GuzzContextImpl gc = (GuzzContextImpl) applicationContext.getBean("guzzContext") ; if(gc == null){ throw new GuzzException("spring bean [guzzContext] not found.") ; } //必须在spring初始化完毕以后才能调用。 SpringExtendedBeanFactory ebf = new SpringExtendedBeanFactory(applicationContext) ; gc.setExtendedBeanFactory(ebf) ; //启动guzz if(context == null){ context = new ContextLoader() ; try { context.initGuzzContext(sc, gc) ; } catch (Exception e) { log.error("can't start guzz.", e) ; context = null ; onLoadError(e) ; } }
5.5 到此guzz初始化过程完成。这也只是一个大体的过程,很多的细节实现都是在GuzzContextImpl的initFromMainConfig里面
相关推荐
guzz的jar包,工程下直接考过来的,可以直接使用
guzz的学习需要用的练习代码,有一个例子。
guzz是一套用来进行快速开发和高性能网站设计的java框架,通过ORM、多数据源数据管理、以及通用数据处理,为系统在数据层的设计提供一站式解决方案。用于替代或者补充hibernate或ibatis,并提供更多的大型系统架构...
为Guzz启用屏幕共享。 此扩展程序允许www.guzz.io用户共享桌面屏幕 支持语言:English
语言:English 为Guzz启用屏幕共享 此扩展程序允许www.guzz.io用户共享桌面屏幕
NULL 博文链接:https://guzz.iteye.com/blog/583426
NULL 博文链接:https://guzz.iteye.com/blog/256235
NULL 博文链接:https://guzz.iteye.com/blog/507276
NULL 博文链接:https://guzz.iteye.com/blog/883225
阿里云提供了基于命名空间的 V2 版 SDK,但是文档不是很完整,使用门槛比较高,于是我封装了一个 Composer 包:https://github.com/johnlui/AliyunOSS 安装 将以下内容增加到 composer.json: 复制代码 代码如下: ...
总结起来,Bof: 是用户友好的避免使用魔术字符串和数组进行配置:相反,它提供可由IDE自动完成的显式,类型化和文档化方法带有默认值:默认支持JSON,4xx和5xx响应抛出异常,默认情况下超时时间短符合PSR-7 未来的...
您可以立即开始在线销售,并从一个地方管理所有交易。安装要安装SDK,请使用以下composer命令: composer require multisafepay/php-sdk警告:此PHP SDK不直接依赖于Guzzle或cURL。相反,它使用客户端抽象和工厂抽象...