- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Jive论坛与Spring框架的经典结合
Jive论坛与Spring框架的经典结合
没有一种新技术是凭空诞生的,它的萌芽或胚胎总是或多或少显现于以前的技术中,Jive论坛是大家潜心研究的设计型应用程序,其相关解析可见本栏的GoF设计模式专栏。 Jive和Spring同为由JavaBeans组成的J2EE Web系统,Jive作为早期成功设计案例,其主要架构成为大多数纯JavaBeans系统的流行架构,Spring也不例外。 Spring框架除了是一种Web层应用框架,还提供了访问EJB层的接口,也有JDBC/ORM的直接操作。Spring框架主要魅力是使用IoC模式和AOP实现了Jive系统的通用功能,从而使得Jive这样的纯JavaBeans架构设计可以重用在其它系统中。 如果你感慨于Jive的设计理念,但是又苦于无法重用其设计时,Spring框架已经帮你实现了。 同时也要注意到:Spring框架类似“杂烩”,它包含了很多J2EE应用的工具,类如对EJB的调用,它的MVC与Struts JSF也是相竞争的,以纯Ioc和AOP设计来说,Spring框架也是一种很重的(Heavy、Weight)框架。Spring框架是复杂的,如果想以Spring替代EJB,那么无疑按了葫芦浮起瓢。 将Jive论坛和Spring框架联系起来,会帮助更多理解设计模式的程序员迅速掌握最新的设计思潮,而不是一种跳跃式的强迫接受。如果你对Jive有很好的研究,将会发现Spring框架是Jive设计的更加通用的提升。 在Jive中,ForumFactory是整个系统的入口和突破点,Jive通过ForumFactory将整个系统掌控在一个工厂模式下,这样做的好处是:便于控制系统的JavaBeans,例如,客户端通过ForumFactory可创建一个Forum或访问一个Forum,但是是否有权限访问呢?如下图: center /center Jive通过ForumFactory将这种访问引导到相应的Proxy类去,如ForumFactoryProxy类等,通过代理模式对这些类进行权限控制访问。这是代理模式的一个主要用处,但是研读Jive的代理模式会发现,要为每个类实现一个Proxy类,非常琐碎,有没有更优雅的方式呢? 当然使用动态代理。 Spring框架基本是抽象上述设计,Spring框架对所有JavaBeans的管理也是基于一个总入口Bean Factory机制,不同的是,BeanFactory可以 管理所有应用???JavaBeans,使用者只要将自己的JavaBeans通过配置文件告诉BeanFactory,那么BeanFactory将会加载这些JavaBeans,例如: beans bean id=exampleBean class=eg.ExampleBean/ bean id=anotherExample class=eg.ExampleBeanTwo/ /beans 在Jive中,ForumFactory加载Jive自己的JavaBeans是通过工厂实现DbForumFactory实现的,如下代码,DbForumFactory引发了后台一系列功能实现,这是纵向,而return new ForumFactoryProxy这个语句则类似引来一个切面,从一个横向方面实现了权限访问等功能: private static String className = com.jivesoftware.forum.database.DbForumFactory; public static ForumFactory getInstance(Authorization authorization) { //If no valid authorization passed in, return null. if (authorization == null) { return null; } //以下使用了Singleton 单态模式 if (factory == null) { synchronized(initLock) { if (factory == null) { ...... try { //动态转载类 Class c = Class.forName(className); factory = (ForumFactory)c.newInstance(); } catch (Exception e) { return null; } } } } //Now, 返回 proxy.用
文档评论(0)