![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 96
寻烟的衣袖
这个作者很懒,什么都没留下…
展开
-
spring事务详解
spring中几种事务的实现方式1.编程式事务管理对基于 POJO 的应用来说是唯一选择。我们需要在代码中调用beginTransaction()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。(已经不用了)2.基于 TransactionProxyFactoryBean的声明式事务管理3.基于 @Transactional 的声明式事务管理4.基于Aspectj AOP配置事务,实际上是cjlib动态代理<aop:aspectj-autoproxy pr原创 2022-04-02 16:43:07 · 2274 阅读 · 0 评论 -
Dubbo框架+zookeeper详解
Dubbo :是一个RPC框架,SOA框架:Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。作为RPC:支持各种传输协议,如dubbo,hession,json,fastjson,底层采用mina,netty长连接进行传输!典型的provider和cusomer模式作为SOA:具有服务治理功能,提供服务的注册和发现,用zookeeper实现注册中心,启动时候服务端会把所有接口注册到注册中心,并且订阅configurat原创 2022-03-31 16:21:32 · 18102 阅读 · 0 评论 -
mybaties是如何创建代理的
问题:mapper层和我们平时说的dao层指的是同一个内容,都是数据库操作的封装,但是在没有集成mybatis时,dao层的接口都是需要我们手动去写其实现类,可在springboot集成中我们却发现:我们并没有手动去实现Mapper接口,但工程却能实实在在的查询数据库,获取我们需要的数据,那么问题来了,mybatis是何时、何地、如何生成mapper代理实例的呢?Mybatis的自动配置类:MybatisAutoConfiguration,至于如何加载此类,可参考:spring-boot-2.0.3启动原创 2022-03-15 21:25:18 · 2384 阅读 · 0 评论 -
Spring security配置详解
一直对项目里的安全配置比较陌生,这次总结一下项目里的那些关于security配置1、 核心组件这一节主要介绍一些在 Spring Security 中常见且核心的 Java 类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。1.1 SecurityContextHolderSecurityContextHolder 用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限… 这些都被保存在 Security原创 2020-12-21 22:08:59 · 7215 阅读 · 6 评论 -
bean的生命周期 BeanPostProcessor和InstantiationAwareBeanPostProcessor详解
由于前面有一篇文章解释了spring如何解决bean循环依赖的问题,里面涉及了SmartInstantiationAwareBeanPostProcessor的切面,这次干脆把BeanPostProcessor和InstantiationAwareBeanPostProcessor一起讲了,也好巩固下知识点基础知识:Bean创建过程中的“实例化”与“初始化”名词1、实例化(Instantiation): 要生成对象, 对象还未生成.2、初始化(Initialization): 对象已经生成.,赋值操原创 2020-08-02 21:37:03 · 2161 阅读 · 1 评论 -
SpringBoot启动流程分析六 refreshContext()
前面讲完了prepareContext流程,接下来讲refreshContext方法:先进入refreshContext方法:最终执行方法是AbstractApplicationContext类public void refresh() throws BeansException, IllegalStateException { synchronized(this.startupShutdownMonitor) { // 准备刷新 this.pr原创 2020-07-10 10:04:55 · 694 阅读 · 0 评论 -
Springboot启动流程分析五 this.prepareContext
前面说完了context = this.createApplicationContext()过程,接下来我们说下this.prepareContext,但其实在这一步之前,还有一步spring boot的异常上报处理,还是先给个总源码,要讲的俩步标号5,6:public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.s原创 2020-06-22 20:36:11 · 742 阅读 · 0 评论 -
Spring的依赖注入方式的使用以及源码分析
又一次傻逼的遇到了静态变量忘记需要靠setter方式注入的问题,这次就这个问题深入分析下源码的实现:一、自动依赖注入的方式1、注解类型spring提供了基于注解的属性自动注入特性,其中可以可用的注解包括spring自身提供的@Autowired和@Value,其中@Autowired是我们在项目中最常用来注入对象属性的,@Value注解通常用于注入属性文件properties的值,除此之外还可以使用JSR-330提供的注解@Inject,类型为javax.inject.Inject。如下:@Comp原创 2020-06-09 10:43:23 · 241 阅读 · 1 评论 -
关于对spring注入bean的顺序,以及spring如何保证事先加载依赖bean的问题
一直对spring容器中注入依赖有一个疑问:当Abean有一个属性Bbean,即Abean对Bbean有依赖,那么容器是怎么保证Bbean在Abean之前加载呢?在说这个问题答案之前,我先抛出一个问题,什么是bean的实例化,什么是bean的初始化,当Abean进行实例化的时候,是对于依赖的Bbean需要的是初始化还是实例化?这个问题困扰了我很久,困扰的原因是beanPostProcesser对bean实例化的定义,这让我混淆了spring与java类的实例化和初始化的定义这里我只说spring对be原创 2020-06-06 21:38:24 · 7744 阅读 · 0 评论 -
spring cloud启动流程四 createApplicationContext()
前文说过了prepareEnvironment()方法接下来我们说createApplicationContext()方法在createApplicationContext方法之前还有一步:run(){ ...ConfigurableEnvironment environment = this.prepareEnvironment(listeners, applicationArguments); this.configureIgnoreBeanInfo(environ原创 2020-05-28 21:02:35 · 705 阅读 · 0 评论 -
Spring cloud 启动三 run prepareEnvironment方法
前面我们讲到了getRunListeners(args)方法获取哪些Listeners,并且还讲了listeners.starting()里面触发了分别哪些Listeners的方法以及相应的作用,这里我们将开始讲解prepareEnvironment()方法:private ConfigurableEnvironment prepareEnvironment( // 获取或创建环境 ConfigurableEnvironment environment = this.getOrCreateEn原创 2020-05-26 19:45:35 · 366 阅读 · 0 评论 -
spring mvc处理流程源码详解
前一篇讲过了tomcat内部的处理细节,一直讲到请求是如何传递到spring 容器的servlet里,这章我们讲讲spring mvc如何处理前面传过来的请求:一张被大街用烂的图,展示了基本的spring mvc处理流程SpringMVC使用一个Servlet(DispacherServlet)代理所有的请求,详见前端控制器模式。将请求发送给对应的处理器处理,较好的分离了每一个处理器的职责。为什么使用HandlerAdapter?SpringMVC中的处理器是方法级别的处理器,而非类级别的处理,原创 2020-05-15 12:25:58 · 347 阅读 · 0 评论 -
Tomcat内部处理请求详解
上一篇写了tomcat处理请求时和spring boot配合的过程,这次我们单独把tomcat处理请求的详细过程一个Tomcat 中只有一个Server, 一个Server 可以包含多个Service一个Service 只有一个Container, 但可以有多个Connectors (因为一个服务可以有多个连接,如同时提供http 和https 连接,也可以提供相同协议不同端口的连接)。Tomcat 里的Server 由org.apache.catalina.startup.Catalina 来管理原创 2020-05-14 19:51:22 · 521 阅读 · 0 评论 -
Spring boot,Tomcat容器之间关系以及请求执行流程
上一篇讲完了spring cloud,Spring boot,Tomcat容器之间关系以及执行顺序,这次再继续讲当一个请求到达服务时,执行的流程:首先我们得把Tomcat讲清楚:综上所述,一个tomcat只包含一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但有多个Connector,这样一个服务可以处理多个连接。多个Connector和一个Container就形成了一个Service,有了Service就可以对外提供服务了,但是Servi原创 2020-05-14 16:06:16 · 7993 阅读 · 1 评论 -
spring cloud,sping boot,微服务,tomcat容器关系及创建执行顺序详解
1、spring cloud 父子容器整体关系由于在spring cloud启动源码加载过程中,没太弄清楚tomcat容器,spring 容器,spring cloud容器整体的加载顺序以及关系,所以想分析下这个流程,先不多说,上图容器大致分为三层:BootStrap Spring 容器:由SpringCloud 监听器创建,用来初始化 SpringCloud 上下文SpringBoot Spring 容器:由SpringBoot创建,也是项目中常用的Spring容器。微服务 Spring相关容原创 2020-05-13 14:51:57 · 1981 阅读 · 0 评论 -
spring cloud启动listeners.starting()后执行的事件顺序以及相关作用
##在spring cloud启动方法中,发现listeners.starting()后,try里的方法环境配置等依次循环执行了多次,事实上是触发了不同事件的onApplicationEvent方法,来看下这些依次怎么个顺序以及发生了什么事public ConfigurableApplicationContext run(String... args) { ... SpringApplicationRunListeners listeners = this.getRunLis原创 2020-05-12 21:11:08 · 751 阅读 · 0 评论 -
spring cloud启动二
##spring cloud启动前文说过了spring cloud启动过程application构造函数实现了那些内容,这里我们接着说run方法里的步骤public ConfigurableApplicationContext run(String... args) { // 1、创建并启动计时监控类 StopWatch stopWatch = new StopWatch(); stopWatch.start(); // 2、初始化应用上下文和异常报告集合 C原创 2020-05-12 16:37:48 · 146 阅读 · 0 评论 -
Spring cloud启动一
##2.1.4.RELEASE版本源代码做为参考SpringApplication 对象的 run 方法的源码和运行流程。 public static void main(String[] args) { SpringApplication.run(BjsdzkApiApplication.class, args);// http://localhost:63336/api/doc.html// http://localhost:63336/api/swagger-ui.html }进原创 2020-05-12 14:11:41 · 249 阅读 · 0 评论 -
springcloud配置文件启动加载以及自动刷新 一
spring cloud 配置文件启动加载一直对spring cloud配置文件加载没太弄明白,这次想整合spring cloud加载过程发现的问题进行整理分析一、启动加载bootstrap.yml/.propertiesSpringBoot默认支持properties和YAML两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。bootstrap...原创 2020-05-07 17:16:47 · 1598 阅读 · 0 评论