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

博客园 首页 新随笔 联系 订阅 管理

2012年9月30日 #

摘要: 转载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 刺猬的温驯 阅读(434) 评论(0) 推荐(0)

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

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

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

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

摘要: 转载http://blog.csdn.net/scorpio3k/article/details/7628894定义数据访问接口:[java]view plaincopypackageorg.kevin.cache.dao;importjava.util.Collection;importorg.kevin.cache.domain.Data;publicinterfaceDataDAO{publicvoidadd(Datadata);publicvoidupdate(Datadata);publicDatafind(Integerid);publicvoiddelete(Integerid) 阅读全文
posted @ 2012-09-30 01:34 刺猬的温驯 阅读(560) 评论(0) 推荐(0)

摘要: 该版本最酷的新特性就是引入全方位的缓存支持。Spring 3.1 提供了对已有的 Spring 应用增加缓存的支持,这个特性对应用本身来说是透明的,通过缓存抽象层,使得对已有代码的影响降低到最小。该缓存机制针对于 Java 的方法,通过给定的一些参数来检查方法是否已经执行,Spring 将对执行结果进行缓存,而无需再次执行方法。可通过下列配置来启用缓存的支持(注意使用新的schema):[html]view plaincopy<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi=" 阅读全文
posted @ 2012-09-30 01:16 刺猬的温驯 阅读(262) 评论(0) 推荐(0)

摘要: 转载http://blog.csdn.net/mingshuo0615/article/details/6085248作为一名Java开发人员你一定想知道如何在Spring应用中使用新的Ehcache注解功能;是吧?ehcache-spring-annotatios是获得Apache认证的一个开源项目;它大大简化了在Spring应用中基于业界使用广泛的Ehacche-2.0版本实现缓存的技术,1.1.2版本的ehcache-spring-annotations刚刚发布不久,在本文中,我将会介绍如何在一个web工程时使用ehcache-spring-annotations实现缓存机制。创建一个W 阅读全文
posted @ 2012-09-30 01:09 刺猬的温驯 阅读(413) 评论(0) 推荐(0)

摘要: 转载http://blog.163.com/among_1985/blog/static/2750052320126178159568/概述我们都知道Hibernate可以支持多种数据库,这种支持是通过对于不同数据库,配置对应数据库的方言完成的。在早期的Hibernate中,需要通过配置hibernate.dialect参数,指定当前使用的数据库方言。对于需要同时支持多种数据库的产品来说,每切换一个数据库,就要重新配置以下dialect参数会显得很麻烦。于是,DialectResolver工厂类就诞生了。简单的说,DialectResolver以及其子类的作用,是根据数据库的MetaData, 阅读全文
posted @ 2012-09-30 00:56 刺猬的温驯 阅读(701) 评论(0) 推荐(1)

摘要: 转载http://blog.163.com/among_1985/blog/static/2750052320126168394939/在Hibernate 4.1.4中,其中使用的数据库连接均由ConnectionProvider.getConnection()方法获取。ConnectionProvider是个接口,其各个子类实现实际数据库连接的获取和释放。在hibernate的框架中ConnectionProvider以及其子类,使用适配器模式,将各种不同类型数据源的适配工作,交给子类进行。类结构如下:ConnectionProviderConnectionProvider是org.hib 阅读全文
posted @ 2012-09-30 00:54 刺猬的温驯 阅读(803) 评论(0) 推荐(0)

摘要: 转载http://cuishen.iteye.com/blog/427921大家都知道hibernate是在JDBC基础上的封装,那么它的数据库连接是怎样实现的呢?带着这个疑问最近研究了下hibernate的源代码,代码还是比较简单的,但是做的很通用,好现在一起来看下源代码hibernate的数据库连接类都放在org.hibernate.connection包内,对于数据库连接类hibernate称其为ConnectionProvider,对!就是连接提供者,org.hibernate.connection.ConnectionProvider只是个供hibernate使用的接口,通过该接口的 阅读全文
posted @ 2012-09-30 00:50 刺猬的温驯 阅读(2132) 评论(0) 推荐(0)

摘要: 转载http://www.iflym.com/index.php/code/resolve-hibernate-result-transformer-by-query.html任何包装jdbc的框架,都离不开将最终的数据封装成java对象的一个过程。在jdbc中,取得的数据被封装在resultset中,通过迭代resultset来一次次的取得相应的字段和数据值。数据库框架始终需要解决的问题在于将resultset中的字段名称信息和相应的字段值对应起来,然后封装成对象,最后将所有的对象形成一个集合,并最终返回给调用者。 任何数据库框架都逃不过这中间的处理逻辑,只不过如何将这些逻辑分散在上下的处理 阅读全文
posted @ 2012-09-30 00:48 刺猬的温驯 阅读(7429) 评论(0) 推荐(0)

摘要: 转载http://blog.csdn.net/wzb56/article/details/7914954#1.构建词典内存树的TrieNode节点类: packagecn.wzb.segmenter.mm.bean;importjava.util.HashMap;/***构建内存词典的Trie树结点**/publicclassTrieNode{/**结点关键字,其值为中文词中的一个字*/publiccharkey='\0';/**如果该字在词语的末尾,则bound=true*/publicbooleanbound=false;/**指向下一个结点的指针结构,用来存放当前字在词中 阅读全文
posted @ 2012-09-30 00:39 刺猬的温驯 阅读(3950) 评论(0) 推荐(0)