01 2019 档案

Spring----监听器容器
摘要:消息监听器容器是一个用于查看JMS目标等待消息到达的特殊的bean,一旦消息到达它就可以获取到消息,并通过调用onMessage方法将消息传递一个MessageListener实现。Spring中消息监听器容器的类型如下: ❤ SimpleMessageListenerContainer:最简单的消 阅读全文

posted @ 2019-01-24 15:47 AoTuDeMan 阅读(803) 评论(0) 推荐(0)

Spring----JmsTemplate
摘要:尽管消息接收可以使用消息监听的方式替代模板方法,但是发送的时候是无法代替的,在Spring中必须要使用JmsTemplate提供的方法来进行发送操作,可见JmsTemplate类的重要性,那么我们对于整合消息服务的分析就从JmsTemplate开始。 JmsTemplate 在上一篇文章中,我们看到 阅读全文

posted @ 2019-01-24 14:32 AoTuDeMan 阅读(464) 评论(0) 推荐(0)

Spring整合ActiveMQ
摘要:前言 上一篇文章JMS的独立使用,看到了整个消息的发送与接收过程非常简单,但是其中却掺杂着大量的冗余代码,比如Connection的创建于关闭,Session的创建于关闭等等,为了消除这一冗余工作量,Spring进行了进一步的封装。 Spring整合ActiveMQ (1)Spring的配置文件 配 阅读全文

posted @ 2019-01-24 11:37 AoTuDeMan 阅读(144) 评论(0) 推荐(0)

JMS的独立使用
摘要:前言 Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。 Java 阅读全文

posted @ 2019-01-24 10:18 AoTuDeMan 阅读(189) 评论(0) 推荐(0)

HttpInvoker-----客户端实现
摘要:上篇文章HttpInvoker 服务端实现分析了服务端的解析以及处理过程后,我们接下来分析对客户端的调用过程,在服务端的调用过程中我们反复的提到需要从HttpServletRequest中提取从客户端传来的RemoteInvocation实例,然后进行相应解析。所以,在客户端,一个比较重要的任务就是 阅读全文

posted @ 2019-01-23 21:16 AoTuDeMan 阅读(441) 评论(0) 推荐(0)

HttpInvoker-----服务端实现
摘要:前言 Spring开发小组意识到在RMI服务和基于HTTP的服务(如Hessian和Burlap)之间的空白。一方面,RMI使用Java标准的对象序列化,但很难穿越防火墙;另一方面。Hessian/Burlap能很好的穿过防火墙工作,但是使用自己一套的对象序列化机制。 就这样,Spring的Http 阅读全文

posted @ 2019-01-23 20:23 AoTuDeMan 阅读(1954) 评论(0) 推荐(1)

RMI实现-----客户端的实现
摘要:根据远程服务(RMI)使用示例文章中的客户端的配置文件,锁定入口类为RmiProxyFactoryBean,先来看一下它的类图: 该类实现的比较重要的接口有InitializingBean、BeanClassLoaderAware以及MethodInterceptor。 其中实现了Initializ 阅读全文

posted @ 2019-01-23 15:21 AoTuDeMan 阅读(966) 评论(0) 推荐(0)

RMI实现-----服务端的实现
摘要:首先我们从服务器端的发布功能开始着手,同样,Spring中的核心还是配置文件,这是所有功能的基础。在服务器端的配置文件中(上篇文章远程服务(RMI)使用示例)我们可以看到,定义了两个bean,其中一个是对接口实现类的发布,另一个则是对RMI服务的发布,使用org.Springframework.re 阅读全文

posted @ 2019-01-23 14:17 AoTuDeMan 阅读(414) 评论(0) 推荐(0)

远程服务(RMI)使用示例
摘要:前言 Java远程方法调用,即Java RMI(Java Remote Method Invocation),是Java编程语言里一种用于实现远程过程调用的应用程序编程接口,它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨 阅读全文

posted @ 2019-01-22 21:23 AoTuDeMan 阅读(709) 评论(0) 推荐(0)

DispatcherServlet的逻辑处理(下篇)
摘要:MultipartContent类型的request处理 对于请求的处理,Spring首先考虑的是对于Multipart的处理,如果是MultipartContent类型的request,则转换为MultipartHttpServletRequest类型的Request。 根据request信息寻找 阅读全文

posted @ 2019-01-22 20:35 AoTuDeMan 阅读(388) 评论(0) 推荐(0)

DispatcherServlet的逻辑处理(上篇)
摘要:在HttpServlet类中分别提供了相应的服务方法,它们是doDelete、doGet、doOptions、doPost、doPut和doTrace,它会根据不同的请求形式将程序引导至对应的函数处理,这几个函数中最常用的就是doGet和doPost,那么我们就直接查看DispatcherServl 阅读全文

posted @ 2019-01-22 14:54 AoTuDeMan 阅读(305) 评论(0) 推荐(0)

SpringMVC-----DispatcherServlet
摘要:servlet的生命周期 在Spring中,ContextLoaderListener只是辅助功能,用于创建WebApplicationContext类型实例,而真正的逻辑实现其实是在DispatcherServlet中进行的,DispatcherServlet是实现servlet接口的实现类。 s 阅读全文

posted @ 2019-01-22 10:31 AoTuDeMan 阅读(390) 评论(0) 推荐(0)

SpringMVC-----ContextLoaderListener
摘要:前言 Spring框架提供了构建Web应用程序的全功能MVC模块。通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC框架并不知道使用的视图,所以不会强迫你只是用 阅读全文

posted @ 2019-01-21 14:31 AoTuDeMan 阅读(403) 评论(0) 推荐(0)

事务增强器(下篇)
摘要:本篇文章接着上篇事物增强器(上篇)继续解析事物增强器的步骤。 回滚处理 上一篇文章已经讲述了目标方法运行前的事务准备工作,而这些准备工作最大的目的无非是对于程序没有按照我们期待的那样去进行,也就是出现特定的错误,那么,当出现错误的时候,Spring是怎样对数据进行恢复的呢? 在对目标方法的执行过程中 阅读全文

posted @ 2019-01-16 11:26 AoTuDeMan 阅读(569) 评论(0) 推荐(0)

事物增强器(上篇)
摘要:TransactionInterceptor支撑着整个事务功能的架构,逻辑还是相对复杂的,那么我们现在切入正题来分析此拦截器是如何实现事务特性的。TransactionInterceptor类继承自MethodInterceptor,所以调用该类是从其invoke方法开始的,首先看下这个方法的源码: 阅读全文

posted @ 2019-01-16 10:01 AoTuDeMan 阅读(287) 评论(0) 推荐(0)

事物自定义标签
摘要:前言 对于Spring中事务的分析,首先从配置文件中入手,在配置文件中有这样的一个配置:<tx:annotation-driven/>。可以说此处是配置事务的开关,如果没有此处配置,那么Spring中将不存在事务的功能。那么我们就从这个配置文件开始分析。 根据之前的分析,我们可以推断,在自定义代码中 阅读全文

posted @ 2019-01-15 17:29 AoTuDeMan 阅读(333) 评论(0) 推荐(0)

MapperFactoryBean的创建
摘要:为了使用MyBatis功能,Spring配置文件中提供了两个bean,除了之前分析的sqlSessionFactoryBean类型的bean以外,还有一个是MapperFactoryBean类型的bean。 对于单独使用MyBatis的时候调用数据库接口的方式是: 而在这一过程中,其实是MyBati 阅读全文

posted @ 2019-01-14 15:01 AoTuDeMan 阅读(4538) 评论(0) 推荐(1)

sqlSessionFactory创建
摘要:前言 分析上篇文章的整合的配置文件,我们可以知道配置的bean是成树状结构的,而在树的最顶层是类型为org.mybatis.Spring.SqlSessionFactoryBean的bean,它将其他相关的bean组装在了一起,那么我们的分析就从此类开始。 sqlSessionFactory创建 对 阅读全文

posted @ 2019-01-11 15:19 AoTuDeMan 阅读(2281) 评论(0) 推荐(0)

Spring整合MyBatis
摘要:前言 Mybatis本事Apache的一个开源项目iBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并且改名为MyBatis。 MyBatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的J 阅读全文

posted @ 2019-01-11 14:03 AoTuDeMan 阅读(227) 评论(0) 推荐(0)

query功能的实现
摘要:query功能的实现 上一篇文章介绍了update方法的功能实现,那么杂数据库操作中查找操作也是使用率非常高的函数,同样我们也需要了解它的实现过程。使用方法如下: 跟踪jdbcTemplate中的query方法: 可以看出整体的套路与update差不多的,只不过在回调类PreparedStateme 阅读全文

posted @ 2019-01-10 16:44 AoTuDeMan 阅读(699) 评论(0) 推荐(0)

save/update功能的实现
摘要:前言 以上篇文章Spring连接数据库的实现为基础开始分析Spring中JDBC的支持,首先寻找整个功能的切入点,在例子中我们可以看到所有的数据库的操作都封装在了UserServiceImpl中,而UserServiceImpl中的所有数据库的操作又以其内部属性jdbcTemplate为基础。这个j 阅读全文

posted @ 2019-01-10 15:37 AoTuDeMan 阅读(674) 评论(0) 推荐(0)

Spring连接数据库的实现
摘要:数据库连接JDBC JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接 阅读全文

posted @ 2019-01-10 11:29 AoTuDeMan 阅读(7102) 评论(0) 推荐(0)

创建AOP静态代理(下篇)
摘要:织入 当我们完成了所有的AspectJ的准备工作后便可以进行织入分析了,首先还是从LoadTimeWeaverAwareProcessor开始。 LoadTimeWeaverAwareProcessor实现BeanPostProcessor方法,那么对于BeanPostProcessor接口来讲,p 阅读全文

posted @ 2019-01-09 15:07 AoTuDeMan 阅读(691) 评论(0) 推荐(1)

创建AOP静态代理(上篇)
摘要:前言 AOP的静态代理主要是在虚拟机启动时通过改变目标对象字节码的方式来完成对目标对象的增强,它与动态代理相比具有更高的效率,因为在动态代理调用的过程中,还需要一个动态创建代理类并代理目标对象的步骤,而静态代理则是在启动时便完成了字节码增强,当系统再次调用目标类时与调用正常的类并无差别,所以在效率上 阅读全文

posted @ 2019-01-09 10:10 AoTuDeMan 阅读(587) 评论(0) 推荐(1)

静态AOP使用示例
摘要:加载时织入(Load-Time Weaving,LTW)指的是在虚拟机载入字节码文件时动态织入AspectJ切面。Spring框架的值添加为AspectJ LTW在动态织入的过程中提供了更细粒度的控制。使用Java(5+)的代理能使用一个叫“Vanilla”的AspectJ LTW,这需要在启动JV 阅读全文

posted @ 2019-01-08 16:37 AoTuDeMan 阅读(827) 评论(0) 推荐(0)

创建AOP代理(下篇)
摘要:接着上篇文章就绪讲述创建AOP代理的CGLIB代理。 CGLIB的使用示例 CGLIB是一个强大的高性能的代码生成包。它广泛的被许多AOP的框架使用,例如SpringAOP和dynaop,为它们提供方法的拦截(Interception)。最流行的OR Mapping工具 Hibernate也使用CG 阅读全文

posted @ 2019-01-08 14:32 AoTuDeMan 阅读(289) 评论(0) 推荐(0)

创建AOP代理(中篇)
摘要:创建代理 在获取了所有对应bean的增强器后,便可以进行代理的创建了。 对于代理类的创建及处理,Spring委托给了ProxyFactory去处理,而在上述函数中主要是对ProxyFactory的初始化操作,进而对真正的创建代理做准备,这些初始化操作包括如下内容: (1)获取当前类中的属性; (2) 阅读全文

posted @ 2019-01-08 10:31 AoTuDeMan 阅读(304) 评论(0) 推荐(0)

创建AOP代理(上篇)
摘要:前言 上一篇文章动态AOP自定义标签讲解了自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,那么这个类型到底做了什么工作来完成AOP的操作呢?来看一下AnnotationAwareAspectJAutoProxyCreator类UML图: 阅读全文

posted @ 2019-01-07 15:49 AoTuDeMan 阅读(327) 评论(0) 推荐(0)

动态AOP自定义标签
摘要:前言 之前的文章讲述过自定义注解,如果声明了自定义的注解,那么就一定会在程序的某个地方注册了对应的解析器。我们发现在AopNamespaceHandler中的init函数: 从上述的代码中可以看出,在解析配置文件的时候,一旦遇到aspectj-autoproxy注解时就会使用解析器AspectJAu 阅读全文

posted @ 2019-01-06 20:23 AoTuDeMan 阅读(382) 评论(0) 推荐(0)

动态AOP使用示例
摘要:前言 我们知道,使用面向对象编程(OOP)有一些弊端,当需要为多个不具有继承关系的对象引入一个公共的行为时,例如日志、安全检查等,我们只有在每个对象里引用公共的行为,这样程序中就产生了大量的重复代码,程序就不便于维护了,所以就有了一个面向对象编程的补充,即面向切面编程(AOP),AOP所关注的方向是 阅读全文

posted @ 2019-01-06 16:12 AoTuDeMan 阅读(317) 评论(0) 推荐(0)

初始化非延迟加载单例和finishRefresh
摘要:初始化非延迟加载单例 完成BeanFactory的初始化工作,其中包括ConversionService的设置、配置冻结以及非延迟加载的bean的初始化工作。 首先我们来了解一下ConversionService类提供的作用。 1.ConversionService的设置 之前我们提到过使用自定义类 阅读全文

posted @ 2019-01-04 16:53 AoTuDeMan 阅读(313) 评论(0) 推荐(0)

BeanFactory的后处理
摘要:前言 BeanFactory作为Spring中容器功能的基础,用于存放所有已经加载的bean,为了保证程序上的高可扩展性,Spring针对BeanFactory做了大量的扩展,比如我们熟知的PostProcessor等都是在这里实现的。 激活注册的BeanFactoryPostProcessor 在 阅读全文

posted @ 2019-01-04 15:43 AoTuDeMan 阅读(322) 评论(0) 推荐(0)

功能扩展
摘要:在进入函数prepareBeanFactory前,Spring已经完成了对配置的解析,而ApplicationContext在功能上的扩展也由此展开 也就是对BeanFactory进行各种功能上的填充。 功能填充对BeanFactory 上面的函数主要进行了几个方面的扩展: (1)增加对SPEL语言 阅读全文

posted @ 2019-01-03 20:23 AoTuDeMan 阅读(334) 评论(0) 推荐(0)

加载BeanFactory
摘要:前言 上一篇文章讲述了ApplicationContext扩展功能的之一:环境准备。这篇文章接着讲述ApplicationContext的扩展功能 加载BeanFactory,也就是初始化BeanFactory,并进行XML文件的读取。 加载BeanFactory obtainFreshBeanFa 阅读全文

posted @ 2019-01-02 21:11 AoTuDeMan 阅读(269) 评论(0) 推荐(0)

导航