君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理
  1057 随笔 :: 381 文章 :: 141 评论 :: 169万 阅读

随笔分类 -  spring源码研究

1 2 下一页

该文被密码保护。
posted @ 2013-08-23 00:35 刺猬的温驯 阅读(5) 评论(0) 推荐(0) 编辑

摘要:转载自http://ljbal.iteye.com/blog/497314前段时间在公司做了一个项目,项目用了spring框架实现,WEB容器是Tomct 5,虽然说把项目做完了,但是一直对spring的IoC容器在web容器如何启动和起作用的并不清楚。所以就抽时间看一下spring的源代码,借此了解它的原理。 我们知道,对于使用Spring的web应用,无须手动创建Spring容器,而是通过配置文件,声明式的创建Spring容器。因此在Web应用中创建Spring容器有如下两种方式: 1. 直接在web.xml文件中配置创建Spring容器。2. 利用第三方MVC框架的扩展点,创建Sprin 阅读全文
posted @ 2013-08-22 00:03 刺猬的温驯 阅读(2940) 评论(2) 推荐(1) 编辑

摘要:转载http://jiwenke.iteye.com/在认真学习Rod.Johnson的三部曲之一:<<Professional Java Development with the spring framework>>,顺便也看了看源代码想知道个究竟,抛砖引玉,有兴趣的同志一起讨论研究吧!以下内容引自博客:http://jiwenke-spring.blogspot.com/,欢迎指导:)在Spring中,IOC容器的重要地位我们就不多说了,对于Spring的使用者而言,IOC容器实际上是什么呢?我们可以说BeanFactory就是我们看到的IoC容器,当然了Sprin 阅读全文
posted @ 2012-09-30 12:44 刺猬的温驯 阅读(420) 评论(0) 推荐(0) 编辑

摘要:上面我们分析了IOC容器本身的实现,下面我们看看在典型的web环境中,Spring IOC容器是怎样被载入和起作用的。简单的说,在web容器中,通过ServletContext为Spring的IOC容器提供宿主环境,对应的建立起一个IOC容器的体系。其中,首先需要建立的是根上下文,这个上下文持有的对象可以有业务对象,数据存取对象,资源,事物管理器等各种中间层对象。在这个上下文的基础上,和web MVC相关还会有一个上下文来保存控制器之类的MVC对象,这样就构成了一个层次化的上下文结构。在web容器中启动Spring应用程序就是一个建立这个上下文体系的过程。Spring为web应用提供了上下文的 阅读全文
posted @ 2012-09-30 12:38 刺猬的温驯 阅读(263) 评论(0) 推荐(0) 编辑

摘要:下面我们看看Spring JDBC相关的实现,在Spring中,JdbcTemplate是经常被使用的类来帮助用户程序操作数据库,在JdbcTemplate为用户程序提供了许多便利的数据库操作方法,比如查询,更新等,而且在Spring中,有许多类似 JdbcTemplate的模板,比如HibernateTemplate等等 - 看来这是Rod.Johnson的惯用手法,一般而言这种Template中都是通过回调函数CallBack类的使用来完成功能的,客户需要在回调接口中实现自己需要的定制行为,比如使用客户想要用的SQL语句等。不过往往Spring通过这种回调函数的实现已经为我们提供了许多现成 阅读全文
posted @ 2012-09-30 12:36 刺猬的温驯 阅读(431) 评论(0) 推荐(0) 编辑

摘要:下面我们对Spring MVC框架代码进行分析,对于webApplicationContext的相关分析可以参见以前的文档,我们这里着重分析Spring Web MVC框架的实现.我们从分析DispatcherServlet入手:Java代码//这里是对DispatcherServlet的初始化方法,根据名字我们很方面的看到对各个SpringMVC主要元素的初始化protectedvoidinitFrameworkServlet()throwsServletException,BeansException{initMultipartResolver();initLocaleResolver() 阅读全文
posted @ 2012-09-30 12:31 刺猬的温驯 阅读(309) 评论(0) 推荐(0) 编辑

摘要:下面我们来看看Spring的AOP的一些相关代码是怎么得到Proxy的,让我们我们先看看AOP和Spring AOP的一些基本概念:Advice: 通知,制定在连接点做什么,在Sping中,他主要描述Spring围绕方法调用注入的额外的行为,Spring提供的通知类型有: before advice,AfterReturningAdvice,ThrowAdvice,MethodBeforeAdvice,这些都是Spring AOP定义的接口类,具体的动作实现需要用户程序来完成。Pointcut: 切点,其决定一个advice应该应用于哪个连接点,也就是需要插入额外处理的地方的集合,例如,被某个 阅读全文
posted @ 2012-09-30 12:17 刺猬的温驯 阅读(485) 评论(0) 推荐(0) 编辑

摘要:我们看看Spring中的事务处理的代码,使用Spring管理事务有声明式和编程式两种方式,声明式事务处理通过AOP的实现把事物管理代码作为方面封装来横向插入到业务代码中,使得事务管理代码和业务代码解藕。在这种方式我们结合IoC容器和Spirng已有的FactoryBean来对事务管理进行属性配置,比如传播行为,隔离级别等。其中最简单的方式就是通过配置TransactionProxyFactoryBean来实现声明式事物;在整个源代码分析中,我们可以大致可以看到Spring实现声明式事物管理有这么几个部分: * 对在上下文中配置的属性的处理,这里涉及的类是TransactionAttribute 阅读全文
posted @ 2012-09-30 12:16 刺猬的温驯 阅读(338) 评论(0) 推荐(0) 编辑

摘要:前面我们分析了Spring AOP实现中得到Proxy对象的过程,下面我们看看在Spring AOP中拦截器链是怎样被调用的,也就是Proxy模式是怎样起作用的,或者说Spring是怎样为我们提供AOP功能的;在JdkDynamicAopProxy中生成Proxy对象的时候:Java代码returnProxy.newProxyInstance(classLoader,proxiedInterfaces,this);这里的this参数对应的是InvocationHandler对象,这里我们的JdkDynamicAopProxy实现了这个接口,也就是说当Proxy对象的函数被调用的时候,这个Inv 阅读全文
posted @ 2012-09-30 12:12 刺猬的温驯 阅读(366) 评论(0) 推荐(0) 编辑

摘要:O/R工具出现之后,简化了许多复杂的信息持久化的开发。Spring应用开发者可以通过Spring提供的O/R方案更方便的使用各种持久化工具,比如Hibernate;下面我们就Spring+Hibernate中的Spring实现做一个简单的剖析。Spring对Hinberanate的配置是通过LocalSessionFactoryBean来完成的,这是一个工厂Bean的实现,在基类AbstractSessionFactoryBean中:Java代码/***这是FactoryBean需要实现的接口方法,直接取得当前的sessionFactory的值*/publicObjectgetObject() 阅读全文
posted @ 2012-09-30 12:08 刺猬的温驯 阅读(339) 评论(0) 推荐(0) 编辑

摘要:我们从FilterSecurityInterceptor我们从入手看看怎样进行授权的:Java代码//这里是拦截器拦截HTTP请求的入口publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{FilterInvocationfi=newFilterInvocation(request,response,chain);invoke(fi);}//这是具体的拦截调用publicvoidinvoke(FilterInvoca 阅读全文
posted @ 2012-09-30 12:06 刺猬的温驯 阅读(401) 评论(0) 推荐(0) 编辑

摘要:简单分析一下Spring Acegi的源代码实现:Servlet.Filter的实现AuthenticationProcessingFilter启动Web页面的验证过程 - 在AbstractProcessingFilter定义了整个验证过程的模板:Java代码publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{//这里检验是不是符合ServletRequest/SevletResponse的要求if(!(requ 阅读全文
posted @ 2012-09-30 12:03 刺猬的温驯 阅读(294) 评论(0) 推荐(0) 编辑

摘要:转载http://blog.csdn.net/chensugang/article/details/3423650今天学习了一下Spring的BeanPostProcessor接口,该接口作用是:如果我们需要在Spring容器完成Bean的实例化,配置和其他的初始化后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProcessor接口的实现。下面我们来看一个简单的例子:packagecom.spring.test.di;importorg.springframework.beans.BeansException;importorg.springframework.beans 阅读全文
posted @ 2012-09-23 15:08 刺猬的温驯 阅读(427) 评论(0) 推荐(0) 编辑

摘要:1.概述 Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean,这两种Bean都被容器管理,但工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该FactoryBean的getObject方法所返回的对象。在Spring框架内部,有很多地方有FactoryBean的实现类,它们在很多应用如(Spring的AOP、ORM、事务管理)及与其它第三框架(ehCache)集成时都有体现,下面简单分析FactoryBean的用法。2.实例以下SimpleFactoryBean类实现了FactoryBean接口中的三个方法。 并将 阅读全文
posted @ 2012-09-23 13:32 刺猬的温驯 阅读(13715) 评论(1) 推荐(1) 编辑

摘要:在sping中提供了另一种实现template模式的方法,利用接口回调函数.(1)TransactionTemplate的示例代码:publicclassTransactionTemplateextendsDefaultTransactionDefinitionimplementsInitializingBean{..........//进行事务处理的骨架,指明事务处理的顺序publicObjectexecute(TransactionCallbackaction)throwsTransactionException{TransactionStatusstatus=this.transacti 阅读全文
posted @ 2012-09-23 12:42 刺猬的温驯 阅读(756) 评论(0) 推荐(0) 编辑

摘要:转载http://explore.iteye.com/blog/667992Spring对JDBC的抽象和对Hibernate的集成,都采用了一种理念或者处理方式,那就是模板方法模式与相应的Callback接口相结合。采用模板方法模式是为了以一种统一而集中的方式来处理资源的获取和释放,以JdbcTempalte为例,如下:Java代码publicabstractclassJdbcTemplate{publicfinalObjectexecute(Stringsql){Connectioncon=null;Statementstmt=null;try{con=getConnection();st 阅读全文
posted @ 2012-09-23 02:52 刺猬的温驯 阅读(310) 评论(0) 推荐(0) 编辑

摘要:转载http://rickyboy.iteye.com/blog/568605观察者模式在不仅在java SWT中还是spring hibernate 应用都是非常广泛的,下面就我的理解做个记录。首先要理解一些概念是必须的事件源:事件源就是一个事件发生的组件,例如按钮,面板,在spring中可以表现为容器。事件:我们都知道当我们点击一下按钮就是一个事件发生了。在具体表现为ActionEvent类。比如时钟Timer类发生定时性动作时。监听器:当某个事件发生的时候,监听器就会监听到,来进行相应的动作。当然一个容器有可能既是事件源。下面是一个spring的观察者模式的事件的例子,在spring中要 阅读全文
posted @ 2012-09-23 02:48 刺猬的温驯 阅读(483) 评论(0) 推荐(0) 编辑

摘要:转载http://liuxi1024.iteye.com/blog/583145 策略模式(Strategy Pattern)中体现了两个非常基本的面向对象设计的基本原则:封装变化的概念;编程中使用接口,而不是对接口实现。策略模式的定义如下:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各个部分之间是弱连接的关系。弱连接的特性使软件具有更强的可扩展性,易于维护;更重要的是,它大大提高了软件的可重用性。下面使用spring中源码说明策略模式(spring va. 阅读全文
posted @ 2012-09-23 02:19 刺猬的温驯 阅读(729) 评论(0) 推荐(0) 编辑

摘要:概述模板方法模式是GOF设计模式中很典型的设计模式,其意图是由抽象父类控制顶级逻辑,并把基本操作的实现推迟到子类去实现,这是通过继承的手段来达到对象的复用。Spring模板方法模式实际是模板方法模式和回调模式的结合,Spring几乎所有的外接扩展都采用这种模式,如JNDI,JMS,JCA的CCI,JDBC,ORM中的Hiberate3、jdo、Toplink等扩展都采用模板方法模式来扩展。经典的模板方法设计模式开闭原则是指一个软件实体应该对扩展开放,对修改关闭。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。如图所示,面向接口编程,client只需调用Template接口中的exe 阅读全文
posted @ 2012-09-06 23:26 刺猬的温驯 阅读(1293) 评论(0) 推荐(0) 编辑

摘要:pring jdbc包提供了JdbcTemplate和它的两个兄弟SimpleJdbcTemplate和NamedParameterJdbcTemplate,我们可以先从JdbcTemplate入手,领略一下这个类的便利和优雅。1、使用JdbcTemplate进行数据访问:初始化JdbcTemplate初始化JdbcTemplate很容易,只需要向它的构造方法传入它所使用的DataSource便可以。如果使用Jakarta Commons DBCP,那么初始化代码如下所示:1BasicDataSource dataSource =newBasicDataSource();2dataSource 阅读全文
posted @ 2012-08-06 23:37 刺猬的温驯 阅读(642) 评论(0) 推荐(0) 编辑

1 2 下一页
点击右上角即可分享
微信分享提示