前言我们学习技术的时代赶上了最好的时代,跳过了很多前人经常踩的坑,前人在踩坑的过程中总结了很多经验和教训,而新时代的我们只是继承了前人的经验和教训,而忽略了这些采坑的过程,以至于我们面对很多新技术都不知道他是什么?他为什么存在?他为什么可以解决这个问题?更不知道如何掌握其原理!云里雾里一头雾水!我希望这篇文章能给各位观众老爷带来一个真正实用的收获,本文会用大量的图形和文字来解析Spring原理。头条篇幅原因。文章结尾是有答案和解析的!目录Spring 特点(解析)Spring 核心组件,Spring 常用模块,Spring 主要包,Spring 常用注解,Spring 第三方结合(解析)Spring IOCSpring APOSpring MVC 原理Spring BootJPA原理Mybatis 缓存Tomcat正文Spring原理它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是Spring仍然可以和其他的框架无缝整合。Spring 特点(解析)轻量级 控制反转 面向切面 容器 框架集合
图片
Spring 核心组件,Spring 常用模块,Spring 主要包,Spring 常用注解,Spring 第三方结合(解析)Spring 核心组件
图片
Spring 常用模块
图片
Spring 主要包
图片
Spring常用注解bean 注入与装配的的方式有很多种,可以通过 xml,get set 方式,构造函数或者注解等。简单易用的方式就是使用 Spring 的注解了,Spring 提供了大量的注解方式。
图片
Spring 第三方结合
图片
Spring IOC概念Spring 容器高层视图IOC 容器实现Spring Bean 作用域Spring Bean 生命周期Spring 依赖注入四种方式(解析)5 种 不同方式的自动装配Spring 依赖注入四种方式(解析)构造器注入/带参数,方便利用构造器进行注入/public CatDaoImpl(String message){this. message = message;}<bean id="CatDaoImpl" class="com.CatDaoImpl"><constructor-arg value=" message "></constructor-arg></bean>setter 方法 注入public class Id {private int id;public int getId() { return id; }public void setId(int id) { this.id = id; }}<bean id="id" class="com.id "> <property name="id" value="123"></property> </bean>静态工厂注入静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让 spring 管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过 spring 注入的形式获取public class DaoFactory { //静态工厂public static final FactoryDao getStaticFactoryDaoImpl(){return new StaticFacotryDaoImpl();}}public class SpringAction {private FactoryDao staticFactoryDao; //注入对象//注入对象的 set 方法public void setStaticFactoryDao(FactoryDao staticFactoryDao) {this.staticFactoryDao = staticFactoryDao;}}//factory-method="getStaticFactoryDaoImpl"指定调用哪个工厂方法<bean name="springAction" class=" SpringAction" ><!--使用静态工厂的方法注入对象,对应下面的配置文件--><property name="staticFactoryDao" ref="staticFactoryDao"></property></bean><!--此处获取对象的方式是从工厂类中获取静态方法--><bean name="staticFactoryDao" class="DaoFactory"factory-method="getStaticFactoryDaoImpl"></bean>实例工厂实例工厂的意思是获取对象实例的方法不是静态的,所以你需要首先 new 工厂类,再调用普通的实例方法:public class DaoFactory { //实例工厂public FactoryDao getFactoryDaoImpl(){return new FactoryDaoImpl();}}public class SpringAction {private FactoryDao factoryDao; //注入对象public void setFactoryDao(FactoryDao factoryDao) {this.factoryDao = factoryDao;}}<bean name="springAction" class="SpringAction"><!--使用实例工厂的方法注入对象,对应下面的配置文件--><property name="factoryDao" ref="factoryDao"></property></bean><!--此处获取对象的方式是从工厂类中获取实例方法--><bean name="daoFactory" class="com.DaoFactory"></bean><bean name="factoryDao" factory-bean="daoFactory"factory-method="getFactoryDaoImpl"></bean>更多解析
图片
Spring APO文章资料都整理在一个文档里面了,[点击这里即可获取](https://docs.qq.com/doc/DY0Fr...)概念AOP核心概念AOP两种代理方式实现原理
图片
Spring MVC 原理MVC流程MVC常用注解
图片
Spring boot原理文章资料都整理在一个文档里面了,[点击这里即可获取](https://docs.qq.com/doc/DY0Fr...)创建独立的 Spring 应用程序嵌入的 Tomcat ,无需部署 WAR 文件简化 Maven 配置自动配置 Spring提供生产就绪型功能,如指标,健康检查和外部配置绝对没有代码生成和对 XML 没有要求配置 [1]
图片
JPA 原理事物本地事物分布式事物两阶段提交(解析)两阶段提交两阶段提交主要保证了分布式事务的原子性:即所有结点要么全做要么全不做,所谓的两个阶段是指:第一阶段:准备阶段;第二阶段:提交阶段。
图片
1、准备阶段事务协调者(事务管理器)给每个参与者(资源管理器)发送 Prepare 消息,每个参与者要么直接返回失败(如权限验证失败),要么在本地执行事务,写本地的 redo 和 undo 日志,但不提交,到达一种“万事俱备,只欠东风”的状态。2、提交阶段如果协调者收到了参与者的失败消息或者超时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据协调者的指令执行提交或者回滚操作,释放所有事务处理过程中使用的锁资源。(注意:必须在最后阶段释放锁资源)Mybatis 缓存Mybatis 的一级缓存原理 ( sqlsession 级别 )二级缓存原理 ( mapper 基本 )
图片
Tomcat 架构
图片
最后[点击这里即可获取](https://docs.qq.com/doc/DY0Fr...)!还有更多资料包含Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。相信对于已经工作和遇到技术瓶颈的码友,在这里会有你需要的内容。


财高八斗Java
22 声望3 粉丝