spring的LocalSessionFactoryBean生成过程与hibernate的SessionFactory生成过程是高度吻合的. 为了后面源码分析,首先讲解一个接口,一个类的功能:①.接口InitializingBean接口的功能:这个接口专门为bean设计的,它只有一个方法.我们知道所有的bean都是由beanFactory来生成的,如果一个bean实现了该接口,在beanFactory为该bean装配好了所有的属性以后,在返回实际bean之前还会调用一次该接口的afterProp…
springboot 事务创建流程源码分析 目录 springboot 事务创建流程源码分析 1. 自动加载配置 2. InfrastructureAdvisorAutoProxyCreator类 3.BeanFactoryTransactionAttributeSourceAdvisor类 4.判断bean对象是否需要进行事务增强处理 5.生成对应代理类 6. 最终生成的代理类class反编译 springboot中事务是相对重要的一个部分.也是aop的一个使用场景.我们今天就来一起从源码的角…
简介 这两个星期都在看spring mvc源码,看来看去还是还是很多细节没了解清楚,在这里把看明白的记录下,欢迎在评论中一起讨论. 一.铺垫 spring mvc是基于servlet的,在正式分析之前,我们来看一下servlet的知识.servlet的生命周期通过三个方法init.service.destory来构建的. init(): 在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或…
启动过程结论 推测web应用类型. spi的方式获取BootstrapRegistryInitializer.ApplicationContextInitializer.ApplicationContextInitializer对象. 通过调用栈推测出main()方法所在的类. 调用启动方法:run(String... args).后面的步骤在这个方法内部! 触发SpringApplicationRunListener的starting(). 创建Environment对象. 触发SpringA…
简介 上一篇,我们分析了spring mvc启动过程的源码,这一节,来一起分析下在用户请求controller的过程中,spring mvc做了什么事? 一.准备 我写这么一个controller package com.jacky.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import o…
在漫长地分析完socket的创建源码后,发现一片浆糊,所以特此总结,我的博客中同时有另外一篇详细的源码分析,内核版本为3.9,建议在阅读本文后若还有兴趣再去看另外一篇博文.绝对不要单独看另外一篇. 一:调用链: 二:数据结构 一一看一下每个数据结构的意义: 1) socket, sock, inet_sock, tcp_sock的关系创建完sk变量后,回到inet_create函数中: 这里是根据sk变量得到inet_sock变量的地址:这里注意区分各个不同结构体.a. struct socke…
我们知道启动spring容器两常见的两种方式(其实都是加载spring容器的xml配置文件时启动的): 1.在应用程序下加载 ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context.xml"); 2.web模式下加载 <context-param> <param-name>contextConfigLocation</param-name> <par…
Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 分析: 总结: 分析: ​ 在上篇文章中,我们着重分析了RestTemplate,主要是因为,如果我们采用Ribbon进行服务间的调用的话,要用到这个类,现在我们就先来看看怎么使用RestTemplate配合Ribbon进行服务间的调用. @SpringBootApplication @EnableDiscoveryClient @Slf4j public class Sp…
简单介绍 Spring IOC的核心方法就在于refresh方法,这个方法里面完成了Spring的初始化.准备bean.实例化bean和扩展功能的实现. 这个方法的作用是什么? 它是如何完成这些功能的? 为什么要这样去实现? 有哪些值得借鉴的地方? refresh方法 在ConfigurableApplicationContext里面定义了这个方法: /** * Load or refresh the persistent representation of the configuration,…
1三个相关数据结构. 关于socket的创建,首先需要分析socket这个结构体,这是整个的核心. 104 struct socket { 105         socket_state            state; 106 107         kmemcheck_bitfield_begin(type); 108         short                   type; 109         kmemcheck_bitfield_end(type); 110 1…