|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。 Spring再壮大,也要面临到临的成绩--由于Spring不是Weblogic、Tomcat般的顶层容器,Servlet和EJB对象不由它创立,以是它必需要到临到Weblogic、Tomcat地点的位面。
初学者一样平常不必管那末多,照着Spring+hibernate+Struts之类的Sample就做了,但渐渐的,大概就要入手下手在jsp+javabean系统,土制框架,Singleton类等情况下利用Spring了。
《ProfessionalJavaDevelopmentwiththeSpringFramework》第3章有"ManagingtheContaine"一节讲这个成绩。一样平常能够分为间接号召系与IoCfashion两类。
1.间接号召系--Singleton的ApplicationContext
最复杂的,就像在UnitTest里那样,间接机关ApplicationContext:
ApplicationContextctx=newClasspathXmlApplicationContext("ApplicationContext.xml");
在Web情况里,会利用ContextLoader机关ApplicationContext后,压进ServletContext。
由ContextLoaderListener或ContextLoaderServlet,在Web使用启动时完成。
然后在Jsp/Servelet中,能够经由过程ServletContext获得ApplicationContext:ApplicationContextcontext=WebApplicationContextUtils.getWebApplicationContext(application);
但像Singleton类大概EJB中,就没有ServletContext可用了。
假如全体像UnitTest那样间接机关,速率就会很不胜。天然的,就想到把ApplicationContext做成单例。
Spring供应了ContextSingletonBeanFactoryLocator如许的物体。
先弄一个beanRefFactory.xml,内里写上一切的applcationContext-*.xml文件名,并把Context定名为"default-context":
<beans>
<beanid="default-context"class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
<list><value>applicationContext.xml</value></list>
</constructor-arg>
</bean>
</beans>
然后让loactor往找它,但代码有点长:
BeanFactoryReferencebfr=DefaultLocatorFactory.getInstance().useBeanFactory("default-context");
BeanFactoryfactory=bfr.getFactory();
MyServicemyService=factory.getBean("myService");
bfr.release();
//nowusemyService
下面的代码其实是太天真,太贫苦了。
还不如本人完成一个复杂的Singleton,扩大ContextLoaderListener类,在Web体系启动时压进Singleton。
新的ContextLoaderListener类重载以下,ContextUtil中包括一个静态的ApplicationContext变量:
publicvoidcontextInitialized(ServletContextEventevent)
{
super.contextInitialized(event);
ServletContextcontext=event.getServletContext();
ApplicationContextctx=WebApplicationContextUtils.getRequiredWebApplicationContext(context);
ContextUtil.setContext(ctx);
}
用家可间接取用:
ApplicationContextcontext=ContextUtil.getContext();
2.IoCfashion
假如一切中央都利用间接号召系,那就反而是在打Rod的耳光了。由于他一向都否决代码与框架深耦合的。
以是,更好的办法是写一些gluecode、baseclass来完成Spring的到临,而不让使用代码发觉SpringApplicationContext的存在。
不外,由于各个框架的布局分歧,Rod也没举措讲出一个通用的整合办法,以是倡议人人只管进修已整合的各类框架,如SpringMVC、Struts的各种体例,写出本人的复杂整合代码来。
只要不断定的挪用某些Singleton类,不合适过早ioc的情形,可使用间接号召系。
唉!都是钱闹的1.Swing和.net开发比较------从市场份额看.net开发主要占据大部分的中小型和中型的的桌面开发,原因是它封装了很多工具 |
|