NekoChip's Blog

一生懸命

文章

Spring Boot 深入学习(6) —— Spring 事务管理

前言: 有关事务的特性 ACID ,想必大家已经熟记于心了。(如果还有不了解事务特性的朋友,建议先花点时间进行了解,以便文中下面的内容不会对您造成困扰。) 本文我们主要以 Spring 的事务管理为主,MySQL 的事务相关内容可参考 MySQL 系列文章:MySQL 学习总结(一) —— 认识 MySQL 以及简单应用。 1. Spring 事务说明 虽然说 Spring 提供了对事务的支持,但并不代表在程序中使用了 Spring 的事务管理就能保证我们的项目一定支持事务。 为什么这么说呢? 因为 Spring 的事务管理本质上使用的是项目中所使用的数据库的事务。简单点说,如果项目中使用的数据库本身就不支持事务,那么即使我们开启了 Spring 的事务管理也是徒劳。 下面这张表中可以看出在 MySQL 5.7 版本中仅有 InnoDB 引擎是支持事务的: +--------------------+---------+----------------------------------------------------------------+--------------+---....

Spring Boot 深入学习(5) —— @Autowired 和 @Resource

前面我们了解了组件是如何注入至 Spring IOC 容器中的,接下来我们再来谈谈在 Spring 中我们是如何使用这些组件的。 在使用 Spring 进行开发的过程中,我们通常使用 @Autowired 注解引入一个对象。那么它是如何引入这个对象的?这就是本篇文章将要讲到的内容。 1. @Autowired 注解 @Autowired 注解是 Spring 提供的注解,用于类的自动装配。在开发过程中我们经常使用到它。 老套路先上源码: @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Autowired { /** * Declares whether the annotated dependency is required. * <p>De....

Spring Boot 深入学习(4) —— 深入理解 Spring Boot 自动装配

在上一篇文章中,对 @Enable 模块驱动有一个明确的认识后,还提到了 @EnableAutoConfiguration 注解。该注解的设计和实现方式与其他 @Enable 模块驱动注解也没有太大的区别,下面我们来看看它是怎么实现 自动装配 的。 1. @EnableAutoConfiguration 注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration { String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration"; Class[] exclude() default {}; String[] excludeName() default {}; }....

Spring Boot 深入学习(3) —— 理解 Enable 模块驱动

Spring 以及 Spring Boot 中有很多模块都使用到了 Enable 模块驱动。这里的模块与我们理解的模块大致相同,均代表着实现某项功能的组件集合。而 Enable 模块驱动简单点说就是开启相应模块的功能。 开始之前,我们先看看 Spring Boot 中都有哪些功能模块用到了 Enable 模块驱动。 图中标注出来的注解想必大家都不陌生,下面我们以 @EnableCaching 注解为示例来看看 @Enable 模块驱动是如何实现的。 1. @EnableCaching 注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(CachingConfigurationSelector.class) public @interface EnableCaching { /** * Indicate whether subclass-based (CGLIB) proxies are to be created as opposed * to standard ....

Spring Boot 深入学习(2) —— 条件组件注册以及 @Import 使用

前文回顾:上篇文章中我们对 Spring 组件注册进行了一个算不得太深入的介绍,文中提到了很多注解,但限于篇幅部分注解还没有介绍到,所以在本篇文章中我们将继续介绍剩下的注解,如:@Conditional 家族系列注解 以及 @Import 注解。 1. @Conditional 注解 顾名思义,使用该注解可以指定注册组件的条件,只有满足了该条件才可以将组件交于 Spring 容器进行管理。源码如下: @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Conditional { /** * All {@link Condition Conditions} that must {@linkplain Condition#matches match} * in order for the component to be registered. */ Class<? extends Condition>....

Spring Boot 深入学习(1) —— Spring IOC 以及组件注册

随着 Spring 家族成员的增加,Spring 系列所提供的功能也是越来越完善。为了能够更好地使用 Spring,理解它的实现原理是必不可少的,那么阅读它的源码无疑是最直接的方式。 为了方便起见,源码学习系列我们使用 Spring Boot 2.2.6.RELEASE 来构建基本项目架构,在项目中逐步深入学习 Spring 。 1. 什么是 IOC ? IOC ,Inversion of Control 直译过来就是我们常说的 “控制反转” 。IOC 是面向对象框架中的一个概念, 通常我们也称之为 IOC 容器。这里还有一个重要的概念叫做 依赖注入 (Dependency Injection),而在 Spring 中 IOC 和 DI 是密不可分的。 关于 IOC 和 DI 概念这一块,我也是直到在知乎上看到一个回答才算是有个较为明确的理解。这里分享给大家。源于知乎:SpringIOC 有什么好处? 2. Spring 是怎么注册 Bean 的? 了解了 IOC 和 DI 后,我们再来看看 Spring 是怎么将 Bean 注册到 IOC 容器中的。 2.1 了解 Appli....

抽象同步队列AQS

---------------------------------------------目录---------------------------------------------- 一、FIFO队列 二、State变量 三、独占模式与共享模式 四、获取锁与释放锁源码分析

一生懸命

© 2021 NekoChip's Blog

Powered by Solo
Theme solo-sakura by adlered
  ❥(^_-)Enjoy Code Enjoy Life❥
版权所有 ICP 证:鄂ICP备19026877号-1

主题 | Theme