Spring
文章平均质量分 87
石头dhf
三人行必有吾师!
展开
-
SpringAOP源码解析总结
问题一、何时生成代理bean??在getBean()过程中,进行了bean的实例化、依赖注入、初始化后,通过bean后处理器进行生成代理类。在getBean()过程中的AbstractAutowireCapableBeanFactory类的 createBean ->doCreateBean 方法完成bean的创建和依赖注入后,进入initializeBean方法进行初始化在初始化bean后...原创 2018-04-02 19:13:13 · 241 阅读 · 0 评论 -
Spring实例化bean如何决定用JDK反射或CGLIB时机
getbean时,如果没有用代理,如果bean没有配置lookup-method和replace-method则采用JDK反射否则使用CGLIB。在Spring源代码中有这样一段代码 public Object instantiate( RootBeanDefinition beanDefinition, String beanName, BeanFactory own...转载 2018-03-27 19:03:17 · 2508 阅读 · 1 评论 -
读取Spring的配置文件applicationContext.xml的5种方法
1.利用ClassPathXmlApplicationContext,这种方式配置文件应该放在类包同路径下Java代码:ApplicationContext ct=new ClassPathXmlApplicationContext("applicationContext01.xml");ct.getBean("");2.利用FileSystemXmlApplicatio转载 2018-03-27 23:51:58 · 411 阅读 · 0 评论 -
论Spring中循环依赖的正确性与Bean注入的顺序关系
一、前言最近在做项目时候遇到一个奇葩问题,就是bean依赖注入的正确性与bean直接注入的顺序有关系,但是正常情况下明明是和顺序没关系的啊,究竟啥情况那,不急,让我一一道来。二、普通Bean循环依赖-与注入顺序无关2.1 循环依赖例子与原理public class BeanA { private BeanB beanB; public BeanB g转载 2018-03-29 16:00:17 · 2215 阅读 · 0 评论 -
Spring JdbcTemplate方法详解
JdbcTemplate主要提供以下五类方法:execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;query方法及queryForXXX方法:用于执行查询相关语句;call方法:用于执行存储过程、函数相关语句。 JdbcTemplate...转载 2018-04-05 22:22:53 · 147 阅读 · 0 评论 -
Spring getBean实例化过程
单例bean实例保存在DefaultSingletonBeanRegistry类的ConcurrentHashMap<String, Object>(256);中1、根据bean名称从缓存中查询,如果查询到再进行判断是否FactoryBean,如果不是直接返回实例;如果是FactoryBean,再判断是否取FactoryBean本身,如果是直接返回,否则调用FactoryBean工厂的...原创 2018-04-06 18:12:21 · 691 阅读 · 0 评论 -
Spring对象生存周期(Scope)的分析
一、Scope定义Scope用来声明容器中管理的对象所应该处的限定场景或者说对象的存活时间,即容器在对象进入相应的Scope之前,生产并装配这些对象,在该对象不再处于这些Scope之后,容器通常会销毁这些对象1。换句说,Scope是用来管理容器中对象的生存周期的,当对象在spring容器中组装生成之后,将其存入Scope内,该对象在容器中的获取及销毁操作都由Scope负责,容器只是在恰当的时间调用...转载 2018-06-22 08:00:04 · 743 阅读 · 0 评论 -
Spring 事务不回滚
为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志。但是这边情况来了,当这个方法异常时候 日志是打印了,但是加的事务却没有回滚。 例: 类似这样的方法不会回滚 (一个方法出错,另一个方法不会回滚) : [html] view plain copy if(userSave){ try { userDao....转载 2018-06-16 08:44:45 · 169 阅读 · 0 评论 -
spring 事务传播行为实例分析
Spring事务传播行为:spring特有的事务传播行为,spring支持7种事务传播行为,确定客户端和被调用端的事务边界(说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制)下图所示为7钟事务传播机制o 传播行为含义PROPAGATION_REQUIRED(XML文件中为REQUIRED)表示当前方法必须在一个具有事务的上下文中运行,如有客户端有事务在进行...转载 2018-06-26 10:40:33 · 162 阅读 · 0 评论 -
Spring事务管理(详解+实例)
写这篇博客之前我首先读了《Spring in action》,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下:Spring事务机制详解Spring事务配置的五种方式Spring中的事务管理实例详解1 初步理解理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码...转载 2018-06-26 22:42:12 · 95 阅读 · 0 评论 -
Aop自动创建代理对象的原理
转载:https://blog.csdn.net/elim168/article/details/78445835我们在使用Spring Aop时,通常Spring会自动为我们创建目标bean的代理对象,以使用对应的Advisor。前提是我们在使用Spring Aop时是使用的<aop:config/>或<aop:aspectj-autoproxy/>,这是因为当我们在ap...转载 2018-04-02 17:30:21 · 372 阅读 · 0 评论 -
Spring Bean的生命周期(非常详细)
Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。 转载请注明地址 http://www.cnb...转载 2018-03-26 15:36:53 · 155 阅读 · 0 评论 -
spring事务传播机制实例讲解
对于SQL事务的概念以及ACID性质,可以参见我的另一篇博文 http://kingj.iteye.com/admin/blogs/1675011spring的管理的事务可以分为如下2类:逻辑事务 在spring中定义的事务通常指逻辑事务,提供比物理事务更抽象,方便的事务配置管理,但也基于物理事务物理事务 特定于数据库的事务spring中支持一下2中事务声明方式编程式事务转载 2017-09-23 15:29:03 · 282 阅读 · 0 评论 -
Spring 事务失效
[问题] Spring的声明式事务,我想就不用多介绍了吧,一句话“自从用了Spring AOP啊,事务管理真轻松啊,真轻松;事务管理代码没有了,脑不酸了,手不痛了,一口气全配上了事务;轻量级,测试起来也简单,嘿!”。不管从哪个角度看,轻量级声明式事务都是一件解放生产力的大好事。所以,我们“一直用它”。 不过,最近的一个项目里,却碰到了一个事务管理上的转载 2017-09-23 15:39:07 · 251 阅读 · 0 评论 -
Spring 源码解读bean载入
1、资源resource定位 2、BeanDefinition的载入和解析得到document对象,再经过DefaultBeanDefinitionDocumentReader中解析的都BeanDefinition然后注册到BeanDefinition ConcurrentHashMap中。单例bean实例保存在DefaultSingletonBeanRegistry类的ConcurrentHas...原创 2017-10-17 22:03:34 · 224 阅读 · 0 评论 -
spring bean加载--从缓存中获取bean
入口方法:getSingleton,在Object sharedInstance = getSingleton(beanName);@Override public Object getSingleton(String beanName) { return getSingleton(beanName, true); }真正的实现:protecte转载 2017-11-09 17:47:26 · 817 阅读 · 0 评论 -
ServletContext与Web应用以及Spring容器启动
一、ServletContext对象获取DemoServlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象。可以把ServletContext看作一个Web应用的服务器端组件的共享内存。在ServletContext中可以存放共享数据,有4个读取或者设置共享数据的方法:方法名描述setAttr转载 2017-11-22 15:55:41 · 279 阅读 · 0 评论 -
Spring五个事务隔离级别和七个事务传播行为总结
Spring五个事务隔离级别:Spring在TransactionDefinition接口中定义这些属性在TransactionDefinition接口中定义了五个不同的事务隔离级别ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应 注:Oracle数据库缺省的事物隔离级别...原创 2017-09-23 15:42:44 · 709 阅读 · 0 评论 -
JdbcTemplate简介
JdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。 JdbcTemplate位于中。其全限定命名为org.springframework.jdbc.core.JdbcTemplate。要使用JdbcTemlate还需一个这个包包含了一下事务和异常控制转载 2018-03-21 08:31:56 · 170 阅读 · 0 评论 -
spring 动态代理如何决定使用jdk代理和cglib(网易面试题)
Spring1.2:将事务代理工厂[TransactionProxyFactoryBean] 或 自动代理拦截器[BeanNameAutoProxyCreator]的 proxyTargetClass 属性,设置为true,则使用CGLIB代理,此属性默认为false,使用JDK动态代理.以下引用 Spring Framework reference 2.0.5:Spring2.0:Spring ...转载 2018-03-25 23:42:04 · 3407 阅读 · 0 评论 -
Spring源码分析之BeanPostProcessor接口和BeanFactoryPostProcessor接口方法不执行原因分析
过程分析的很精彩,原文转载:https://blog.csdn.net/u011734144/article/details/72600932首先下面是我的Bean[html] view plain copy/* * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache Lic...转载 2018-03-26 12:00:08 · 1048 阅读 · 0 评论 -
spring总结
1、依赖注入或者控制反转的意义,减少类与类直接的调用耦合。通过调用bean的角度为控制反转,通过容器的角度为依赖注入。类里依赖的是接口,接口通过配置文件注入实现类。2、注入方法:1)、设置注入<property name = "属性名" ref="bean名"2)、构造注入 <constructor-arg ref="bean名称"> 区别:注入的时机不同,设置为先通过无参...原创 2018-03-22 11:36:52 · 129 阅读 · 0 评论 -
Spring事务传播机制
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁) 概述当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Sp转载 2017-09-22 20:33:02 · 255 阅读 · 0 评论