Spring 是 Java 后端最核心的基础设施之一。学习 Spring 不能只背注解,还要理解 IoC、AOP、Bean 生命周期、事务、自动装配、设计模式和常见扩展点。
Spring Boot 则进一步把配置、依赖管理、自动装配和生产可观测能力整合起来,让应用开发更快,但也更容易让人忽略底层原理。
时间比较紧的话,可以先看面试突击版的 Spring 常见面试题总结,再回到本专题补 IoC、AOP、事务和自动装配的完整细节。
Spring 是 Java 后端最核心的基础设施之一。学习 Spring 不能只背注解,还要理解 IoC、AOP、Bean 生命周期、事务、自动装配、设计模式和常见扩展点。
Spring Boot 则进一步把配置、依赖管理、自动装配和生产可观测能力整合起来,让应用开发更快,但也更容易让人忽略底层原理。
时间比较紧的话,可以先看面试突击版的 Spring 常见面试题总结,再回到本专题补 IoC、AOP、事务和自动装配的完整细节。
@Async 注解由 Spring 框架提供,被该注解标注的类或方法会在 异步线程 中执行。这意味着当方法被调用时,调用者将不会等待该方法执行完成,而是可以继续执行后续的代码。
@Async 注解的使用非常简单,需要两个步骤:
@EnableAsync ,开启异步任务。@Async 。@SpringBootApplication
// 开启异步任务
@EnableAsync
public class YourApplication {
public static void main(String[] args) {
SpringApplication.run(YourApplication.class, args);
}
}
// 异步服务类
@Service
public class MyService {
// 推荐使用自定义线程池,这里只是演示基本用法
@Async
public CompletableFuture<String> doSomethingAsync() {
// 这里会有一些业务耗时操作
// ...
// 使用 CompletableFuture 可以更方便地处理异步任务的结果,避免阻塞主线程
return CompletableFuture.completedFuture("Async Task Completed");
}
}
这篇文章会从下面从以下几个问题展开对 IoC & AOP 的解释
首先声明:IoC & AOP 不是 Spring 提出来的,它们在 Spring 之前其实已经存在了,只不过当时更加偏向于理论。Spring 在技术层次将这两个思想进行了很好的实现。
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解本文都提供了具体用法,掌握这些内容后,使用 Spring Boot 来开发项目基本没啥大问题了!
为什么要写这篇文章?
最近看到网上有一篇关于 Spring Boot 常用注解的文章被广泛转载,但文章内容存在一些误导性,可能对没有太多实际使用经验的开发者不太友好。于是我花了几天时间总结了这篇文章,希望能够帮助大家更好地理解和使用 Spring 注解。
因为个人能力和精力有限,如果有任何错误或遗漏,欢迎指正!非常感激!
“JDK 中用到了哪些设计模式? Spring 中用到了哪些设计模式? ”这两个问题,在面试中比较常见。
我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下。
由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章篇幅有限,对于设计模式以及一些源码的解读我只是一笔带过,这篇文章的主要目的是回顾一下 Spring 中的设计模式。
IoC(Inversion of Control,控制反转) 是 Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。IoC 的主要目的是借助于“第三方”(Spring 中的 IoC 容器) 实现具有依赖关系的对象之间的解耦(IOC 容器管理对象,你只管使用即可),从而降低代码之间的耦合度。
这篇文章主要是想通过一些问题,加深大家对于 Spring 的理解,所以不会涉及太多的代码!
下面的很多问题我自己在使用 Spring 的过程中也并没有注意,自己也是临时查阅了很多资料和书籍补上的。网上也有一些很多关于 Spring 常见问题/面试题整理的文章,我感觉大部分都是互相 copy,而且很多问题也不是很好,有些回答也存在问题。所以,自己花了一周的业余时间整理了一下,希望对大家有帮助。
Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。
前段时间答应读者的 Spring 事务 分析总结终于来了。这部分内容比较重要,不论是对于工作还是面试,但是网上比较好的参考资料比较少。
事务是逻辑上的一组操作,要么都执行,要么都不执行。
相信大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。
我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson() 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。
Spring Boot 相关的面试题为我的知识星球(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了《Java 面试指北》中。
Spring Boot 核心源码解读 为我的知识星球(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了《Java 必读源码系列》中。