
重学Spring
懋为
居安思危,思则有备,有备无患,敢以此规。
展开
-
浅谈Spring AOP
AOP基础概念及Spring AOP 在软件开发中,AOP(Aspect-Oriented Programming,面向方面编程)把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似,比如权限认证、日志、事务处理。通常来讲,这些横切关注点从概念上是与应用的业务逻辑原创 2017-12-19 22:34:37 · 243 阅读 · 0 评论 -
Spring 声明式事务源码分析
Spring 的声明式事务实现方式主要有2种,一种为通过使用Spring的< tx:advice >定义事务通知与AOP相关配置实现,另为一种通过@Transactional实现事务管理实现,个人认为本质上其实都一样,就是用定义的注解或者配置信息将目标对象包装起来,拦截对访问目标对象的请求,实现对目标对象访问的增强处理。Spring 使用 TransactionInterceptor ...原创 2018-06-06 17:27:45 · 494 阅读 · 0 评论 -
SpringMVC请求处理过程浅析
上图完整描绘了SpringMVC的请求处理过程,可以看到,此过程都是以DispatcherServlet为中轴线进行的,而具体的处理逻辑在DispatcherServlet的doDispatch方法中,protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exce...原创 2018-03-27 00:12:20 · 342 阅读 · 0 评论 -
SpringMVC启动过程浅析
ContextLoaderListener初始化ContextLoaderListener的作用就是启动web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener接口,当web容器启动时,会触发ServletContextListener的contextInitialized方法。public interface Se...原创 2018-03-25 01:47:32 · 2184 阅读 · 0 评论 -
如何编写一份优雅的Spring配置文件
前言众所周知,Spring最大的特点就是控制反转,而实现控制反转就是通过那一系列的配置文件。平时笔者在开发过程中也写过不少XML配置文件,但大部分都是基于现有的配置文件稍作修改,很多标签内容只能做到“知其然却不知其所以然”,而有很多标签根本不知其然,所以便抽时间认真学习一下相关内容,希望能够编写一份优雅的Spring配置文件。声明随便打开一份Spring工程的配置文件,第一行基本上...原创 2018-03-07 23:42:35 · 5774 阅读 · 1 评论 -
Spring Bean初始化实例
本文转自http://uule.iteye.com/blog/2094609容器启动时:最先调用 BeanFactoryPostProcessor ->postProcessBeanFactory() getBean时:实例化之后调用: InstantiationAwareBeanPostProcessor ->post转载 2017-12-29 23:53:03 · 298 阅读 · 0 评论 -
Spring容器启动流程(下)
一般来说,Spring框架启动流程大体上分成两个大的步骤:IoC容器初始化和Bean的依赖注入。Bean的依赖注入Bean的依赖注入大致可分为如下过程:转换对应beanName;尝试从缓存中加载单例;获取单例创建Bean转换对应beanName考虑到传入的beanName可能是别名,也有可能是FactoryBean,因此需要进行必要的转换。简单来说,如果是FactoryBean的话,去除前原创 2017-12-28 23:49:00 · 351 阅读 · 0 评论 -
Spring容器启动流程(上)
一般来说,Spring框架启动流程大体上分成两个大的步骤:IoC容器初始化和Bean的依赖注入。IoC容器初始化Spring IOC容器初始化分三个过程:第一个过程是Resource定位过程, 这个Resource定位指的是BeanDefinition的资源定位,它由ResourceLoader通过统一的Resource接口来完成,这个Resource对各种形式的BeanDefinition的使用原创 2017-12-26 01:01:09 · 373 阅读 · 0 评论 -
Spring 事务管理
事务的定义事务是一个操作集合,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务的特性在一个事务性操作的环境下,操作有着以下的4种特性,被称为ACID特性:原子性(Atomicity):当事务结束,它对所有资源状态的改变都被视为一个操作,这些操作要不同时成功,要不同时失败;一致性(Consistency):操作完成后,所有数据必须符合业务规则,否则事务必须中止;隔离性(Isol原创 2018-01-02 23:37:20 · 314 阅读 · 0 评论 -
深入理解Spring AOP实现
总所周知,Spring通过动态代理的方式实现AOP处理,那么当我们调用一个被AOP处理的方法,其内部是如何实现的呢?我们以Jdk动态代理为例,当我们访问代理对象到最后访问目标方法,JdkDynamicAopProxy采用了如下步骤:调用Proxy.newProxyInstance()生成JdkDynamicAopProxy对象调用该对象的invoke()方法;然后匹配通知类型调用通知(通知就是原创 2018-01-01 01:30:57 · 232 阅读 · 0 评论 -
Spring注解详解
本文转自:http://blog.youkuaiyun.com/xyh820/article/details/7303330/ 概述注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写转载 2017-12-26 01:17:08 · 170 阅读 · 0 评论 -
Spring 自定义标签创建
Spring自定义标签配置大致需要以下步骤:创建一个需要扩展的组件;定义一个XSD文件描述组件内容;创建一个文件,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义;创建一个Handler文件,扩展自NameSpaceHandlerSupport,目的是将组件注册到Spring容器;编写Spring.handlers和Spring.schemas文件;原创 2017-12-23 15:29:04 · 180 阅读 · 0 评论 -
Spring AOP 对象内部方法间的嵌套调用
前两天面试的时候,面试官问了一个问题,大概意思就是一个类有两个成员方法 A 和 B,两者都加了事务处理注解,定义了事务传播级别为 REQUIRE_NEW,问 A 方法内部直接调用 B 方法时能否触发事务处理机制。答案有点复杂,Spring 的事务处理其实是通过AOP实现的,而实现AOP的方法有好几种,对于通过 Jdk 和 cglib 实现的 aop 处理,上述问题的答案为否,对于通过Aspec...原创 2018-06-17 00:04:56 · 7885 阅读 · 2 评论