java 程序员:拜托别再问我 Spring 原理了、你问的这篇文章都有

310 篇文章 6 订阅
298 篇文章 3 订阅

前言

我们学习技术的时代赶上了最好的时代,跳过了很多前人经常踩的坑,前人在踩坑的过程中总结了很多经验和教训,而新时代的我们只是继承了前人的经验和教训,而忽略了这些采坑的过程,以至于我们面对很多新技术都不知道他是什么?他为什么存在?他为什么可以解决这个问题?更不知道如何掌握其原理!云里雾里一头雾水!

我希望这篇文章能给各位观众老爷带来一个真正实用的收获,本文会用大量的图形和文字来解析 Spring 原理。

篇幅原因。文章结尾是有答案和解析的!

目录

  • Spring 特点(解析)

  • Spring 核心组件,Spring 常用模块,Spring 主要包,Spring 常用注解,Spring 第三方结合(解析)

  • Spring IOC

  • Spring APO

  • Spring MVC 原理

  • Spring Boot

  • JPA 原理

  • 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

文章资料都整理在一个文档里面了,需要获取的小伙伴可以直接转发+关注后私信(学习)即可获取哦

  • 概念

  • AOP 核心概念

  • AOP 两种代理方式

  • 实现原理

Spring MVC 原理

  • MVC 流程

  • MVC 常用注解

Spring boot 原理

文章资料都整理在一个文档里面了,需要获取的小伙伴可以直接转发+关注后私信(学习)即可获取哦

  • 创建独立的 Spring 应用程序

  • 嵌入的 Tomcat ,无需部署 WAR 文件

  • 简化 Maven 配置

  • 自动配置 Spring

  • 提供生产就绪型功能,如指标,健康检查和外部配置

  • 绝对没有代码生成和对 XML 没有要求配置 [1]

JPA 原理

  • 事物

  • 本地事物

  • 分布式事物

  • 两阶段提交(解析)

两阶段提交

两阶段提交主要保证了分布式事务的原子性:即所有结点要么全做要么全不做,所谓的两个阶段是指:第一阶段:准备阶段;第二阶段:提交阶段。

1、准备阶段

事务协调者(事务管理器)给每个参与者(资源管理器)发送 Prepare 消息,每个参与者要么直接返回失败(如权限验证失败),要么在本地执行事务,写本地的 redo 和 undo 日志,但不提交,到达一种“万事俱备,只欠东风”的状态。

2、提交阶段

如果协调者收到了参与者的失败消息或者超时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据协调者的指令执行提交或者回滚操作,释放所有事务处理过程中使用的锁资源。(注意:必须在最后阶段释放锁资源)

Mybatis 缓存

  • Mybatis 的一级缓存原理 ( sqlsession 级别 )

  • 二级缓存原理 ( mapper 基本 )

Tomcat 架构

最后

资料已整理成文档,需要获取的小伙伴可以直接转发+关注后私信(学习)即可获取哦

还有更多资料包含 Spring,MyBatis,Netty 源码分析,高并发、高性能、分布式、微服务架构的原理,JVM 性能优化这些成为架构师必备的知识体系。相信对于已经工作和遇到技术瓶颈的码友,在这里会有你需要的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值