- 浏览: 914791 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (498)
- J2EE (52)
- 数据库 (17)
- java基础 (43)
- web技术 (19)
- 程序设计 (6)
- 操作系统 (18)
- IT资讯 (7)
- 我的IT生活 (12)
- 学习笔记 (9)
- Jquery (25)
- JavaScript (18)
- spring (40)
- Hibernate (12)
- Struts (10)
- YUI (2)
- Extjs (22)
- .net (0)
- Eclipse (10)
- 社会主义 (2)
- 服务器 (9)
- CSS (8)
- 网络安全 (16)
- 版本控制 (9)
- PHP (2)
- Oracle (42)
- SQL server (1)
- Mysql (11)
- 项目管理 (3)
- 开发工具使用 (10)
- SQL语句 (7)
- Perl (0)
- Shell (6)
- 漏洞 (4)
- ibatis (5)
- hacker (2)
- SQL注入 (6)
- Hacker工具 (2)
- 入侵和渗透 (7)
- 插件/组件 (2)
- 最爱开源 (5)
- 常用软件 (2)
- DOS (1)
- HTML (2)
- Android (9)
- CMS (1)
- portal (8)
- Linux (7)
- OSGI (1)
- Mina (5)
- maven (2)
- hadoop (7)
- twitter storm (2)
- sap hana (0)
- OAuth (0)
- RESTful (1)
- Nginx (4)
- flex (1)
- Dubbo (1)
- redis (1)
- springMVC (1)
- node.js (1)
- solr (2)
- Flume (1)
- MongoDB (2)
- ElasticSearch (1)
最新评论
-
M_drm:
请问要怎么设置浏览器才不报没权限呢?
用JS在页面调用本地可执行文件的方法(ACTIVEX) -
Alexniver:
官方文档。When importing data into I ...
mysql导入数据过慢 解决方法 -
camelwoo:
我记得 Criteria 可以做连接查询与子查询,也可以做分页 ...
Hibernate总结篇二 -
zhenglongfei:
楼主如果SubKeyName 这个节点不存在,怎么办??怎么用 ...
Java操作注册表 -
yxx676229549:
用log4j 2 了
logback
Spring再强大,也要面对降临的问题--因为Spring不是Weblogic、Tomcat般的顶层容器,Servlet和EJB对象不由它创建,所以它必须要降临到Weblogic、Tomcat所在的位面。
初学者一般不用管那么多,照着Spring+hibernate+Struts之类的Sample就做了,但慢慢的,也许就要开始在jsp+javabean体系,土制框架,singleton类等环境下使用Spring了。
《Professional Java Development with the Spring Framework》第3章有"Managing the Containe"一节讲这个问题。一般可以分为直接召唤系与IoC fashion两类。
1.直接召唤系--Singleton的Application Context
最简单的,就像在UnitTest里那样,直接构造Application Context:
在Web环境里,会使用ContextLoader构造ApplicationContext后,压进Servlet Context。
由ContextLoaderListener或ContextLoaderServlet,在Web应用启动时完成。
然后在Jsp/Servelet中,可以通过Servlet Context取得ApplicationContext:
但像singleton类或者EJB中,就没有Servlet Context可用了。
如果全部像UnitTest那样直接构造,速度就会很不堪。自然的,就想到把ApplicationContext做成单例。
Spring提供了ContextSingletonBeanFactoryLocator这样的物体。
先搞一个beanRefFactory.xml,里面写上所有的applcationContext-*.xml文件名,并把Context命名为"default-context":
然后让loactor去找它,但代码有点长:
上面的代码实在是太灵活,太麻烦了。
还不如自己实现一个简单的Singleton,扩展ContextLoaderListener类,在Web系统启动时压入Singleton。
新的ContextLoaderListener类重载如下,ContextUtil中包含一个静态的ApplicationContext变量:
用家可直接取用:
2.IoC fashion
如果所有地方都使用直接召唤系,那就反而是在打Rod的耳光了。因为他一直都反对代码与框架深耦合的。
所以,更好的方法是写一些glue code、base class来完成Spring的降临,而不让应用代码察觉Spring Application Context的存在。
不过,因为各个框架的结构不同,Rod也没办法讲出一个通用的整合方法,所以建议大家尽量学习已整合的各种框架,如Spring MVC、Struts的种种方式,写出自己的简单整合代码来。
只有不确定的调用某些Singleton类,不适合过早ioc的情况,可以使用直接召唤系。
初学者一般不用管那么多,照着Spring+hibernate+Struts之类的Sample就做了,但慢慢的,也许就要开始在jsp+javabean体系,土制框架,singleton类等环境下使用Spring了。
《Professional Java Development with the Spring Framework》第3章有"Managing the Containe"一节讲这个问题。一般可以分为直接召唤系与IoC fashion两类。
1.直接召唤系--Singleton的Application Context
最简单的,就像在UnitTest里那样,直接构造Application Context:
ApplicationContext ctx = new ClasspathXmlApplicationContext("ApplicationContext.xml");
在Web环境里,会使用ContextLoader构造ApplicationContext后,压进Servlet Context。
由ContextLoaderListener或ContextLoaderServlet,在Web应用启动时完成。
然后在Jsp/Servelet中,可以通过Servlet Context取得ApplicationContext:
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(application);
但像singleton类或者EJB中,就没有Servlet Context可用了。
如果全部像UnitTest那样直接构造,速度就会很不堪。自然的,就想到把ApplicationContext做成单例。
Spring提供了ContextSingletonBeanFactoryLocator这样的物体。
先搞一个beanRefFactory.xml,里面写上所有的applcationContext-*.xml文件名,并把Context命名为"default-context":
<beans> <bean id="default-context" class="org.springframework.context.support.ClassPathXmlApplicationContext"> <constructor-arg> <list> <value>applicationContext.xml</value></list> </constructor-arg> </bean> </beans>
然后让loactor去找它,但代码有点长:
BeanFactoryReference bfr = DefaultLocatorFactory.getInstance().useBeanFactory("default-context"); BeanFactory factory = bfr.getFactory(); MyService myService = factory.getBean("myService"); bfr.release(); // now use myService
上面的代码实在是太灵活,太麻烦了。
还不如自己实现一个简单的Singleton,扩展ContextLoaderListener类,在Web系统启动时压入Singleton。
新的ContextLoaderListener类重载如下,ContextUtil中包含一个静态的ApplicationContext变量:
public void contextInitialized(ServletContextEvent event) { super.contextInitialized(event); ServletContext context = event.getServletContext(); ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context); ContextUtil.setContext(ctx); }
用家可直接取用:
ApplicationContext context = ContextUtil.getContext();
2.IoC fashion
如果所有地方都使用直接召唤系,那就反而是在打Rod的耳光了。因为他一直都反对代码与框架深耦合的。
所以,更好的方法是写一些glue code、base class来完成Spring的降临,而不让应用代码察觉Spring Application Context的存在。
不过,因为各个框架的结构不同,Rod也没办法讲出一个通用的整合方法,所以建议大家尽量学习已整合的各种框架,如Spring MVC、Struts的种种方式,写出自己的简单整合代码来。
只有不确定的调用某些Singleton类,不适合过早ioc的情况,可以使用直接召唤系。
发表评论
-
使用EhCache和Spring AOP实现计算结果缓存
2012-08-07 10:47 1059原文:http://kim-miao.iteye.com/bl ... -
wsdl axis2 spring
2012-08-02 17:06 931http://renxiangzyq.iteye.com/ ... -
spring 监听器 IntrospectorCleanupListener简介
2012-08-02 17:00 1067"在服务器运行过程中,Spring不停的运行的计划任 ... -
Quartz的cron时间表达式
2012-04-11 17:33 1318一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素 ... -
Spring 框架的设计理念与设计模式分析
2012-03-06 13:49 993Spring 框架的设计理念与设计模式分析 http://ww ... -
Spring事务配置的五种方式
2012-03-04 10:40 1397前段时间对Spring的事务配置做了比较深入的研究,在此之间对 ... -
Spring技术内幕:深入解析Spring架构与设计原理(转)
2011-07-01 16:58 1169http://jiwenke.iteye.com/blo ... -
AOP 的利器:ASM 3.0 介绍
2011-06-29 13:48 1417AOP 的利器:ASM 3.0 介绍 http://www ... -
Spring LDAP 1.3.1 发布
2010-12-05 21:17 1215http://www.iteye.com/news/18834 ... -
Spring MVC 3.x annotated controller的几点心得体会
2010-12-01 09:53 2486最近拿Spring MVC 3.x做项目,用了最新的系列相关A ... -
Spring开始关注移动应用开发,发布Spring Mobile,Spring Android
2010-11-29 11:01 3370近日,Roy Clarkson发布了S ... -
SSH全注解-annotation详细配置
2010-11-21 18:50 2474如果有点SSH框架的经验,这个很好理解.配置不难. 配置an ... -
spring安全框架应用
2010-10-11 22:09 3256第一步 将spring-security-core-2.0. ... -
spring3.0.4 新增加的注解(mvc:resources)
2010-08-23 22:19 8950从spring3.0.3发布以后一直等待spring3.0.4 ... -
spring2.0与spring2.5的差别
2010-08-22 00:14 1654资料:http://ajava.org/online/spri ... -
利用Spring框架封装的JavaMail现实同步或异步邮件发送
2010-08-21 23:25 5561利用Spring框架封装的JavaMail现实同步或异步邮件发 ... -
领略Spring 3.x 时代的Spring MVC
2010-08-21 23:20 1436鼎鼎大名的Spring框架3.0版在12月5日由其作者之一—— ... -
使用 Spring 2.5 基于注解驱动的 Spring MVC
2010-08-21 23:16 1038概述 继 Spring 2.0 对 Spring MVC ... -
Spring2.0压缩包目录说明
2010-08-21 22:44 5791、 Spring2.0压缩包目录说明 aspectj目录 ... -
Spring的起源和背景 以及你为什么要使用Spring
2010-08-17 09:04 1543Spring的起源和背景 Rod J ...
相关推荐
在非Spring环境下,可以直接引用`spring-web`模块来使用`RestTemplate`,无需整个Spring框架。只需在Maven或Gradle的依赖管理中添加`spring-web`,然后实例化`RestTemplate`对象即可进行HTTP请求。 然而,随着...
然而,有时我们需要在非Spring管理的组件或者非Spring环境下获取Spring管理的Bean。这时,我们就需要一种方式来访问Spring的ApplicationContext,它是Spring容器的核心,负责管理所有Bean。 一种常见的做法是创建一...
SSM框架中的Spring Web扮演着至关重要的角色,它作为整个SSM架构的入口,负责处理来自用户的请求,并通过Spring的依赖注入和AOP特性,与其他组件如Spring Core、Spring JDBC、Spring ORM等协同工作,为开发者提供一...
**在 Spring Web MVC 环境下使用 Dojo** Dojo 是一个强大的 JavaScript 库,提供了丰富的 UI 组件、数据管理、异步通信等功能,广泛应用于构建富客户端应用。Spring Web MVC 是 Java 开发Web应用的主流框架,以其...
1. **Spring WebFlow简介**:介绍Spring WebFlow的基本概念,包括它为何被创建,以及在什么场景下使用最为合适。它主要解决的问题是如何优雅地管理用户会话中的复杂流程。 2. **流程定义**:Spring WebFlow通过XML...
这通常适用于需要在特定请求处理中使用Spring Bean的情况。例如,你可以创建一个`MySpringServlet`,并在`init`方法中加载Spring配置: ```java public class MySpringServlet extends HttpServlet { private ...
首先,Groovy在Spring中的应用主要体现在以下几个方面: 1. **配置文件简化**:Groovy的脚本特性使得我们可以用更简洁的方式编写Spring的XML配置,甚至完全摒弃XML,转向使用Groovy的@Configuration注解和@Bean方法...
对于使用Ivy作为构建工具的项目,可以通过在ivy.xml文件中添加以下依赖来使用Spring Web Flow: ```xml <dependency org="org.springframework.webflow" name="spring-webflow" rev="2.4.0"/> ``` ##### 1.7 夜间...
在非Web环境下,我们通常通过`new ClasspathXmlApplicationContext(spring配置文件)`来创建应用上下文对象。然而,在Web环境中,这样做可能导致配置文件加载多次,创建多个应用上下文对象,造成资源浪费。为了解决...
通过阅读Spring Web Flow的参考指南,开发者可以掌握如何定义和管理Web应用中的复杂业务流程,以及如何使用EL表达式在流程中操作数据。此外,了解视图渲染机制能够帮助开发者更有效地将流程数据展示给用户。随着...
1. **Servlet上下文**:`spring-web.jar`提供了`WebApplicationContext`,这是Spring应用程序在Web环境中的上下文。它允许bean与Servlet上下文进行交互,例如注册监听器、过滤器等。 2. **HTTP处理**:包括`...
4. **在SWF中使用Hessian服务**:将生成的Hessian代理注入到SWF的模型或者控制器中,然后在流程中的适当位置调用这些远程方法,执行业务逻辑。 5. **异常处理和安全考虑**:由于服务调用跨越了网络,我们需要考虑...
- **统一的技术栈**:无论是在Struts、Spring MVC、Tapestry还是JSP等环境中,SWF都提供了一套通用的解决方案。 - **简化复杂逻辑**:SWF通过预定义的契约和自动化的生命周期管理,简化了复杂页面流程的实现,降低了...
在Spring框架中,Webscripts主要用于构建可复用、可维护的Web应用逻辑。它们将业务逻辑、数据处理和视图渲染整合在一起,形成一个独立的单元,可以方便地进行部署和管理。通过使用Spring Webscripts,开发者能够更...
这一部分的文档也适用于那些熟悉Spring但想要了解如何在Servlet环境中使用Spring的开发人员。除了Spring Web MVC之外,Spring框架还为反应式编程模型提供了支持,使得开发者可以根据需要选择传统的基于Servlet的Web...
当我们在Web环境中运行Spring应用时,IoC容器需要在Web容器(如Tomcat、Jetty等)中启动并运行。这个过程涉及到一系列的初始化步骤,确保Spring能够正确地与Web容器集成。 首先,`WebApplicationContext`是`...
在"Spring Maven Web Java"的场景下,开发者通常会使用Maven作为构建工具,管理Spring框架及其相关依赖。Spring MVC作为Web应用的开发框架,提供了处理HTTP请求、转发到控制器、数据绑定、视图渲染等功能。开发者...
通过分析这个项目,你可以学习如何在非Web环境中使用Spring,如何定义和管理bean,以及如何利用ApplicationContext来启动和运行应用程序。同时,也可以探索Spring其他高级特性的使用,如AOP、事务管理等。通过实践和...