随笔分类 - Spring
Spring AOP中pointcut expression表达式
摘要:Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. args() @args() execution() this() target() @target() wit
阅读全文
Spring AOP 中pointcut expression表达式
摘要:原文地址——http://blog.csdn.net/qq525099302/article/details/53996344 Pointcut是指那些方法需要被执行”AOP”,是由”Pointcut Expression”来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方
阅读全文
记一次spring里bean无法注入的历程
摘要:应用启动的时候失败,看了下异常,是这个 NoUniqueBeanDefinitionException。 大家都知道,这是因为有俩个类型相同的实例,在被注入的时候,spring不知道该用哪个。 但是,我们都知道,一个向spring注册的bean,他的名字默认是这个类的shortclassname,然
阅读全文
spring-数据库操作组件的实现
摘要:Ok,今天看了下spring数据库组件实现的源码,简要的做下笔记。 首先是JdbcTemplate,其实这个技术的实现很简单,就是一个模板类,把执行sql的主干流程都写好了,比如connection的获取,关闭,异常的捕获,statement的生成等等,而把不同的部分的暴露出来,让用户进行自定义,比
阅读全文
spring-事件通知实现
摘要:ok,今天不知道看啥来着,突然想起来spring内部的事件通知的实现,其实比较简单,简要记一下。然后又回顾了下eventbus的实现,其实俩者的实现方式大同小异吧,只是spring的很多操作都可以直接基于底层的ioc容器,可以带来一部分的便利性。 事件通知无非是listener的注册,还有事件的分发
阅读全文
spring-事务管理学习
摘要:Ok,spring的源码学习到了事务这块就大概要告一段落了,后续如果有机会的话,会开启spring-boot的学习。不过目前还是打算把下一段的学习计划放在其他事情上。先对事务这块做一个简要的学习笔记,后续的规划再说。 总体来说,Spring的事务管理的实现,是通过aop来实现的,其实也很好理解,对一
阅读全文
spring-aop代理的生效原理
摘要:主要说下spring里aop的生效的原理吧,并不是讲底层的cglib和gdk动态代理。 还是老一套的分析流程,先找到了aop的标签的handler,然后看下在解析这个标签的时候,都干了些什么,其实主要就是看下注册了哪些bean,哪些beanPostProcessor. 因为看了那么多的spring的
阅读全文
spring-mvc源码阅读笔记
摘要:简要的做一些spring-mvc部分的源码学习笔记 Spring-mvc做的工作主要是俩大方面吧:一个是初始化一个ioc容器,一个是mvc部分的控制和视图模块的实现。 先说下ioc容器的初始化部分:ioc的初始化主要在俩个地方,一个是contextLoadListener里,另一个在Dispatch
阅读全文
spring的bean在什么时候被实例化
摘要:Spring什么时候实例化bean,首先要分2种情况 第一:如果你使用BeanFactory作为Spring Bean的工厂类,则所有的bean都是在第一次使用该Bean的时候实例化 第二:如果你使用ApplicationContext作为Spring Bean的工厂类,则又分为以下几种情况: (1
阅读全文
spring父子Ioc容器的关系
摘要:在网上找了一下,没有直接解说ioc父子容器关系的文章,所以大概看了下代码,自己写下吧,写俩行做个笔记。 1. 在进行dean的注册的时候,父容器和子容器是互不干扰的,各自注册自己的 2. 在实例化的时候,父容器只能拿到自己的bean。 子容器会优先拿自己的,如果自己没有的话,才会去父容器里去拿。 好
阅读全文
CGLIB介绍
摘要:一、什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。 二、CGLIB原理 CGLIB原理:动态生成一个要
阅读全文
Cglib及其基本使用
摘要:前言 最近一直在看Spring源码,其实我之前一直知道AOP的基本实现原理: 如果针对接口做代理默认使用的是JDK自带的Proxy+InvocationHandler 如果针对类做代理使用的是Cglib 即使针对接口做代理,也可以将代理方式配置成走Cglib的 之后要看AOP源码了,Proxy+In
阅读全文
Spring的两种代理JDK和CGLIB的区别浅谈
摘要:一、原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。 1、如果目标对象实现了接口,默认情况下会采用JDK的动态
阅读全文
动态代理:JDK动态代理和CGLIB代理的区别
摘要:代理模式:代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法、实际执行的是被代理类的方法。 而AOP,是通过动态代理实现的。 一、简单来说: JDK动态代理只能对实现了接口的类生成代理,而不能针对类 CGLIB是针对类实现代理,主要是对指定的类生
阅读全文
spring启动component-scan类扫描加载,以及@Resource,postConstruct等等注解的解析生效源码
摘要:spring里IOC的原理就不详细写了, 如果想要搞清楚自动扫描组件是如何实现的,还有@Resouce @PostConstruct等注解的工作原理,最好可以先搞清楚整个IOC容器的运作原理再来分析这个过程. IOC容器里的bean的生命周期如下: 1. beanDefinition 的解析 2.
阅读全文
spring启动component-scan类扫描加载过程---源码分析
摘要:最近因为写书的事情,一段时间没有写博客了,有朋友最近问到了spring加载类的过程,尤其是基于annotation注解的加载过程,有些时候如果由于某些系统部署的问题,加载不到,很是不解!就针对这个问题,我这篇博客说说spring启动过程,用源码来说明,这部分内容也会在书中出现,只是表达方式会稍微有些
阅读全文
spring源码分析之spring-core asm概述
摘要:ASM是什么? ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify existing classes or dynamically generate cla
阅读全文
Spring组件扫描 <context:component-scan/>
摘要:目录(?)[-] 总结 使用方式 扫描controller下所以类 扫描符合条件Controller的类推荐 目录(?)[-] 我们在SpringMVC开发项目中,有的用注解和XML配置Bean,这两种都各有自己的优势,数据源配置比较经常用XML配置,控制层依赖的service比较经常用注解等(在部
阅读全文
Spring的注解@Qualifier小结
摘要:近期在捯饬spring的注解,现将遇到的问题记录下来,以供遇到同样问题的童鞋解决~ 先说明下场景,代码如下: 有如下接口: 同时有下述两个实现类 EmployeeServiceImpl和EmployeeServiceImpl1: 调用代码如下: 在启动tomcat时报如下错误: 其实报错信息已经说得
阅读全文
Web环境中Spring的启动过程
摘要:1.spring不但可以在JavaSE环境中应用,在Web环境中也可以广泛应用,Spring在web环境中应用时,需要在应用的web.xml文件中添加如下的配置: [xhtml] view plain copy …… <context-param> <param-name>contextConfig
阅读全文