注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小葫芦君(汉斯的博客)

博客迁移到新博客:https://blog.ssxingshou.com

 
 
 

日志

 
 
关于我

小小葫芦商城,为您提供高品质的商品,一流的产品,一流的包装服务,一流的物流服务,放心购买

网易考拉推荐

了解Spring基础  

2011-12-13 09:43:40|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本篇技术文章将作为Spring入门篇。

什么是Spring开发框架?

Spring 是一个基于Java/JavaEE的应用开发平台。其实现是由作者Rod Johnson2002年出版《Expert One-on-One J2EE Design and Development》一书后,总结经验后,研发而成。
Spring
的核心内容包括:
1.
轻量级的容器, 提供集中式,自动配置与装配应用业务对象功能。

Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用POJO对象管理的 Inversion of Control(控制反转)容器,提供非侵入的方式为当前一些复杂的系统应用提供松耦合,一致性的业务对象配置管理。容器以快捷开发为出发点,方便开发中 的可测试性和部署时的可扩展性为目的。实现只针对单个业务组件在独立环境的下进行开发与测试,在部署时再集成到任意的Java SEJava EE环境中。

2. 提供了唯一的事务管理抽象,基于插件式的事务管理(声明性事务管理)能够很容易的实现事务层管理,而无需了解各种底层事务实现,例如JTA或者 JDBC事务提供一个一致的编程模型。相对于只依赖Java EE环境的普通的JTAEJB CMT方式, Spring就更简单轻便了。

3. 提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率(大大减少了开发的代码量)并且减少了可能的错误。基于JDBC的异常信息也是完全遵循Spring的公共DAO异常层级。

4. Spring的数据访问层集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps O/R mapping解决方案,其目的是提供统一的DAO支持类实现和事务管理策略。尤其HibernateSpringIOC特性的支持,能更好的实现集 成,以更好的利用Spring的公共事务与DAO异常层级。

5. Spring提供了一个用标准Java编写的AOP框架(也能集成AspectJ),提供基于POJOs的声明式的事务管理和其他企业事务--如果你需要 还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。当然也可以选择不支持 JTA方式的开发,尤其如不支持JTATomcat服务器下开发单数据库应用。

6. 提供可以与IoC容器集成的强大而灵活的MVC Web框架. 其本身通过提供策略接口与多视图支持技术(JSP, Velocity模块引擎, Tiles, iTextPOI)实现框架的高可配置性。 Spring作为中间层也可以很容易的与其它第三方web MVC框架实现集成,如Struts,WebWork,Struct2(StrutsWebWork的集成)Tapestry.

Spring bean对象生命周期管理

Spring bean对象的生命周期管理包括Bean的创建装配和Bean的销毁两个过程。在了解Spring bean对象生命周期管理内容之前,首先来整理一下Spring对每个Bean进行管理扩展接口有哪些?

BeanNameAware

Spring在注册当前Bean到容器中时,会把当前BeanId值作为参数回调用到该接口方法

 

BeanClassLoaderAware

Spring在注册当前Bean到容器中时,会把当前Bean Class所属的ClassLoader对象作为参数回调该接口方法

BeanFactoryAware

Spring在注册当前Bean到容器中时,会把当前Bean对象所属的BeanFactory工厂对象实例作为参数回调该接口方法

ResourceLoaderAware

Spring在注册当前Bean到容器中时,会把ResourceLoader对象实例作为参数回调该接口方法. ResourceLoader对象方便的提供基于Classpath方式的Resource文件查找和定位功能。例如:

Resource template = rl.getResource("some/resource/path/myTemplate.txt");

 

ApplicationEventPublisherAware

Spring在注册当前Bean到容器中时,会把ApplicationEventPublisher对象实例作为参数回调该接口方法. ApplicationEventPublisher对象用于对所有监听ApplicationListener接口事件的对象,发布ApplicationEvent事件。

MessageSourceAware

Spring在注册当前Bean到容器中时,会把MessageSource对象实例作为参数回调该接口方法. MessageSource用于处理Spring的信息资源对象,如国际化信息处理

ApplicationContextAware

Spring在注册当前Bean到容器中时,会把ApplicationContext对象实例作为参数回调该接口方法.

ServletContextAware

Spring在注册当前Bean到容器中时,会把ServletContext对象实例作为参数回调该接口方法. 这个只在基于WebApplicationContext才会启用

BeanPostProcessors

Spring在对Bean象进行实例化前后,回调相应的方法。

InitializingBean

Spring容器完成Bean对象所有properties属性的依赖装配后,回调该接口方法。

DisposableBean

Spring容器在执行关闭操作时,对Bean对进行销毁前,回调该接口方法

了解相关的生命周期管理接口概念后,下面就比较容易整理SpringBean创建和销毁的整个调用过程:

Spring Bean创建过程如下:

1

触发 BeanNameAware setBeanName方法

2

触发BeanClassLoaderAwaresetBeanClassLoader方法

3

触发BeanFactoryAware's setBeanFactory

4

触发ResourceLoaderAware's setResourceLoader (only applicable when running in an application context)

5

触发ApplicationEventPublisherAwaresetApplicationEventPublisher方法 (只在由application context启动时工作)

6

触发MessageSourceAware setMessageSource 方法(只在由application context启动时工作)

7

触发ApplicationContextAware'setApplicationContext方法 (只在由application context启动时工作)

8

触发ServletContextAwaresetServletContext 方法(web application context下启用)

9

触发BeanPostProcessorspostProcessBeforeInitialization方法

10

触发InitializingBean afterPropertiesSet方法

11

触发用户在XML文件中配置的”init-method” 指定的方法名。不指定则跳过

12

触发BeanPostProcessors postProcessAfterInitialization 方法

Spring Bean销毁过程如下:

1

触发 DisposableBeandestroy方法

2

触发用户在XML文件中配置的” destroy-method” 指定的方法名。不指定则跳过

至此Spring Bean生命周期管理的核心内容的介绍就到这里。

只有把握了生命周期,才能知道在什么流程阶段可以做什么事情,该做什么事情,不管是构建工具maven还是spring框架,hibernate等都有其生命周期,tomcat也一样,这都是想通的思路。“生命周期”

  评论这张
 
阅读(1199)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017