Java框架系列
文章平均质量分 89
Java框架相关经验与实战分享
蜀州凯哥
人,量力而行!事,看透再说!
展开
-
从零开始实现一个MyBatis加解密插件
本篇文章介绍使用MyBatis插件来实现数据库字段加解密的过程。一、需求背景公司出于安全合规的考虑,需要对明文存储在数据库中的部分字段进行加密,防止未经授权的访问以及个人信息泄漏。由于项目已停止迭代,改造的成本太大,因此我们选用了MyBatis插件来实现数据库加解密,保证往数据库写入数据时能对指定字段加密,读取数据时能对指定字段解密。二、思路解析2.1 系统架构对每个需要加密的字段新增密文字段(对业务有侵入),修改数据库、mapper.xml以及DO对象,通过插件的方式把针对明文/原创 2022-10-04 10:03:04 · 1539 阅读 · 0 评论 -
剖析 SPI 在 Spring 中的应用
一、概述SPI(Service Provider Interface),是Java内置的一种服务提供发现机制,可以用来提高框架的扩展性,主要用于框架的开发中,比如Dubbo,不同框架中实现略有差异,但核心机制相同,而Java的SPI机制可以为接口寻找服务实现。SPI机制将服务的具体实现转移到了程序外,为框架的扩展和解耦提供了极大的便利。得益于SPI优秀的能力,为模块功能的动态扩展提供了很好的支撑。本文会先简单介绍Java内置的SPI和Dubbo中的SPI应用,重点介绍分析Spring中的SPI机原创 2022-10-04 09:48:37 · 1587 阅读 · 0 评论 -
说一下 Spring 事务传播机制?
1.什么是 Spring 事务传播机制?Spring 事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring 事务传播机制的诞生是为了规定多个事务在传播过程中的行为的。比如方法 A 开启了事务,而在执行过程中又调用了开启事务的 B 方法,那么 B 方法的事务是应该加入到 A 事务当中呢?还是两个事务相互执行互不影响,又或者是将 B 事务嵌套到 A 事务中执行呢?所以这个时候就需要一个机制来规定和原创 2022-10-04 08:52:31 · 672 阅读 · 0 评论 -
Spring 支持的 bean 的作用域和类型有哪些?
Spring 框架作为一个管理 Bean 的 IoC 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看。PS:Java 中的公共类可称之为 Bean 或 Java Bean。1.作用域Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式。比如 singleton 单例作用域,就表示 Bean 在整个 Spring 中只有一份,它是全局共享的,当有人修改了这个值之后,那么另一个人读取到的就是被修改原创 2022-10-04 08:45:04 · 846 阅读 · 0 评论 -
什么是MVCC多版本并发控制
1. 什么是MVCCMVCC全称是Multi-Version Concurrency Control(多版本并发控制),是一种并发控制的方法,通过维护一个数据的多个版本,减少读写操作的冲突。如果没有MVCC,想要实现同一条数据的并发读写,还要保证数据的安全性,就需要操作数据的时候加读锁和写锁,这样就降低了数据库的并发性能。有了MVCC,就相当于把同一份数据生成了多个版本,在操作的开始各生成一个快照,读写操作互不影响。无需加锁,也实现数据的安全性和事务的隔离性。事务的四大特性中隔离性就是基于M原创 2022-09-29 07:22:20 · 951 阅读 · 0 评论 -
这样优化Spring Boot,启动速度快到飞起
微服务用到一时爽,没用好就呵呵啦,特别是对于服务拆分没有把控好业务边界、拆分粒度过大等问题,某些 Spring Boot 启动速度太慢了,可能你也会有这种体验,这里将探索一下关于 Spring Boot 启动速度优化的一些方方面面。启动时间分析IDEA 自带集成了 async-profile 工具,所以我们可以通过火焰图来更直观的看到一些启动过程中的问题,比如下图例子当中,通过火焰图来看大量的耗时在 Bean 加载和初始化当中。图来自 IDEA 自带集成的 async-profile 工具,可在原创 2022-09-22 13:56:59 · 388 阅读 · 0 评论 -
Spring @Value 使用应该注意的点
很多时候,我们会使用到Spring的EL表达式,通过@Value(“${http://xxx.xxx}”)注解方式从属性文件中获取配置信息,但是,稍不注意,获取的值就为null, 今天我们就来聊聊Spring @Value 使用应该注意的点。问题描述如下代码,通过@Value(“${http://xxx.xxx}”)从 application.properties文件中获取 application.name 属性的值# application.properties application.nam原创 2022-09-22 08:46:43 · 658 阅读 · 0 评论 -
Dubbo深度解析
框架介绍概述Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。相关概念dubbo运行架构如下图示节点角色说明调用关系说明服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。服务消费原创 2022-09-20 14:24:34 · 520 阅读 · 0 评论 -
Spring AOP是什么?为什么要有Spring AOP?
目录一、AOP简介1.1 什么是AOP?1.2 AOP核心概念至此AOP中的核心概念就已经介绍完了,总结下:1.3 小结二、AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤知识点1:EnableAspectJAutoProxy知识点2:Aspect知识点3:Pointcut知识点4:Before三、AOP工作流程3.1 AOP工作流程3.2 AOP核心概念本文会介绍AOP相关概念、AOP工作流程,带大家运用AOP相关知识完成对应的案例原创 2022-09-19 09:15:48 · 608 阅读 · 0 评论 -
springboot应该怎么学?
目录本文包含8k字笔记+124节课程带你学习SpringBoot。SpringBoot1,SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 Controller1.1.1.3 启动服务器1.1.1.4 进行测试1.1.2 对比1.1.3 官网构建工程1.1.3.1 进入SpringBoot官网1.1.3.2 选择依赖1.1.3.3 生成工程1.1.4 SpringBoot工程快速启动1.1.4.1原创 2022-09-19 08:39:25 · 359 阅读 · 0 评论 -
用K8s的公司有多少人会部署K8s?
介绍容器化部署随着Docker技术的流行,对项目的容器化部署方式越来越流行,容器化部署的优点如下:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署虽然容器化部署可以带来很多便利,但是也会出现一些问题,比如说:一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器当并发访问量变大的时候,怎么样做到横向扩展容器数量这些容器管理的问题统称为容器原创 2022-09-19 08:04:41 · 668 阅读 · 0 评论 -
如何在短期内快速掌握 Dubbo 原理和源码?有哪些经验可以分享?
服务集群的概述概述为了避免单点故障,现在的应用通常至少会部署在两台服务器上,这样就组成了集群。集群就是单机的多实例,在多个服务器上部署多个服务,每个服务就是一个节点,部署N个节点,处理业务的能力就提升 N倍(大约),这些节点的集合就叫做集群。管理控制台目前的管理控制台已经发布0.1版本,结构上采取了前后端分离的方式,前端使用Vue和Vuetify分别作为Javascript框架和UI框架,后端采用Spring Boot框架。既可以按照标准的Maven方式进行打包,部署,也可以采用前后端原创 2022-09-19 07:40:23 · 192 阅读 · 0 评论 -
spring cloud 和 dubbo 各自的优缺点是什么?
概述dubbo是一个简单易用的RPC框架,通过简单的提供者,消费者配置就能完成无感的网络调用。那么在dubbo中是如何将提供者的服务暴露出去,消费者又是如何获取到提供者相关信息的呢?这就是本章我们要讨论的内容。dubbo与spring的整合在了解dubbo的服务注册和服务发现之前,我们首先需要掌握一个知识点:Spring中自定义Schema。Spring自定义SchemaDubbo 现在的设计是完全无侵入,也就是使用者只依赖于配置契约。在 Dubbo 中,可以使用 XML 配置相关信息,原创 2022-09-19 07:18:43 · 309 阅读 · 0 评论 -
spring事务管理和mysql事务有什么关系?
在大部分涉及到数据库操作的项目里面,事务控制、事务处理都是一个无法回避的问题。比如,需要对SQL执行过程进行事务的控制与处理的时候,其整体的处理流程会是如下的示意:首先是要开启事务、然后执行具体SQL,如果执行异常则回滚事务,否则提交事务,最后关闭事务,完成整个处理过程。按照这个流程的逻辑,写一下对应的实现代码:public void testJdbcTransactional(DataSource dataSource) { Connection conn = null; in原创 2022-09-17 09:05:07 · 1238 阅读 · 0 评论 -
MyBatis-plus 从入门到入土
mybatis-plus是一款Mybatis增强工具,用于简化开发,提高效率。下文使用缩写mp来简化表示mybatis-plus,本文主要介绍mp搭配SpringBoot的使用。注:本文使用的mp版本是当前最新的3.4.2,早期版本的差异请自行查阅文档官方文档。快速入门创建一个SpringBoot项目 导入依赖<!-- pom.xml --> <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http原创 2022-09-15 08:58:02 · 190 阅读 · 0 评论 -
Spring Boot最核心的25个注解
Spring Boot 最核心的 25 个注解1、@SpringBootApplication这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。其实这个注解就是 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplicati原创 2022-09-15 08:13:05 · 263 阅读 · 0 评论 -
SpringBoot中properties和yml有什么区别?
properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款“产品”。在 Spring Boot 时代已经不需要使用 XML 文件格式来配置项目了,取而代之的是 properties 或 yml 文件。properties 配置文件属于早期,也是目前创建 Spring Boot(2.x)项目时默认的配置文件格式,而 yml 可以看做是对 properties 配置文件的升级,属于 Spring Boot 的“新版”配置文件。原创 2022-09-14 08:38:59 · 1924 阅读 · 0 评论 -
SpringBoot 有几种读取配置文件的方法?
Spring Boot 中读取配置文件有以下 5 种方法:使用 @Value 读取配置文件。使用 @ConfigurationProperties 读取配置文件。使用 Environment 读取配置文件。使用 @PropertySource 读取配置文件。使用原生方式读取配置文件。它们的具体使用方法如下,为了方便测试,我们在 Spring Boot 配置文件 application.properties 添加以下内容:1.使用 @Value 读取配置文件使用 @Value 可以原创 2022-09-14 08:34:42 · 1570 阅读 · 0 评论 -
MyBatis中${} 和 #{} 有什么区别?
${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的 SQL 中,但它们区别却是很大的,接下来我们一起来看。1.功能不同${} 是将参数直接替换到 SQL 中,比如以下代码:最终生成的执行 SQL 如下:从上图可以看出,之前的参数 ${id} 被直接替换成具体的参数值 1 了。 而 #{} 则是使用占位符的方式,用预处理的方式来执行业务,我们将上面的案例改造为 #{} 的形式,实现代码如下:最终生成的 S原创 2022-09-14 08:27:49 · 5741 阅读 · 0 评论 -
Spring 依赖注入有几种?各有什么优缺点?
IoC 和 DI 是 Spring 中最重要的两个概念,其中 IoC(Inversion of Control)为控制反转的思想,而 DI(Dependency Injection)依赖注入为其(IoC)具体实现。那么 DI 实现依赖注入的方式有几种?这些注入方式又有什么不同?接下来,我们一起来看。0.概述在 Spring 中实现依赖注入的常见方式有以下 3 种:属性注入(Field Injection);Setter 注入(Setter Injection);构造方法注入(Construc原创 2022-09-14 08:19:50 · 764 阅读 · 0 评论 -
@Autowired 和 @Resource 有什么区别?
@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能,但二者却有众多不同,并且这也是常见的面试题之一,所以我们今天就来盘它。 @Autowired 和 @Resource 的区别主要体现在以下 5 点:来源不同; 依赖查找的顺序不同; 支持的参数不同; 依赖注入的支持不同; 编译器 IDEA 的提示不同。1.来源不同@Autowired 和 @Resource 来自不同的“父类”原创 2022-09-13 09:41:33 · 798 阅读 · 1 评论 -
Bean 作用域是啥?它有几种类型?
Spring 框架作为一个管理 Bean 的 IoC 容器,那么 Bean 自然是 Spring 中的重要资源了,那 Bean 的作用域是什么意思?又有几种类型呢?接下来我们一起来看。PS:Java 中的公共类可称之为 Bean 或 Java Bean。1.作用域Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式。比如 singleton 单例作用域,就表示 Bean 在整个 Spring 中只有一份,它是全局共享的,当有人修改了这个值之后,那么另一个人读取到的就是被修改原创 2022-09-13 09:22:57 · 261 阅读 · 0 评论 -
说一下 Spring 中 Bean 的生命周期?
Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时,无需通过 new 来创建对象,只需要通过 DI(依赖注入),从 Spring 中取出要使用的对象即可。那么 Spring 中,Bean 的生命周期又有哪些呢?接下来,我们一起来看。1.Bean 生命周期Spring 中 Bean 的生命周期是指:Bean 在 Spring(IoC原创 2022-09-13 09:17:28 · 375 阅读 · 0 评论 -
SpringBoot 中如何操作事务?
在 Spring Boot 中操作事务有两种方式:编程式事务或声明式事务,接下来我们一起来看二者的具体实现。1.编程式事务在 Spring Boot 中实现编程式事务又有两种实现方法:使用 TransactionTemplate 对象实现编程式事务;使用更加底层的 TransactionManager 对象实现编程式事务。它们的具体实现代码如下。1.1 TransactionTemplate 使用要使用 TransactionTemplate 对象需要先将 TransactionTe原创 2022-09-13 09:05:10 · 3865 阅读 · 0 评论 -
14个SpringBoot优化小妙招
每次聊到代码优化,都会有很多人说理论、架构、核心思路,其实我觉得代码优化这事说简单了很简单,说复杂了吧它也有一定的难度,但是我觉得有一个良好的编码习惯很重要,下面分享一下14个springboot项目中优化代码的小技巧,让代码优化跟容易,就像完成一件小事。1. 定义配置文件信息有时候我们为了统一管理会把一些变量放到 yml 配置文件中例如用 @ConfigurationProperties 代替 @Value使用方法定义对应字段的实体@Data// 指定前缀@Config原创 2022-09-13 08:37:01 · 422 阅读 · 0 评论 -
理解SpringBoot的自动装配
1、前言SpringBoot 最核心的功能就是自动装配,Starter 作为 SpringBoot 的核心功能之一,基于自动配置代码提供了自动配置模块及依赖的能力,让软件集成变得简单、易用。使用 SpringBoot 时,我们只需引人对应的 Starter,SpringBoot 启动时便会自动加载相关依赖,集成相关功能,这便是 SpringBoot 的自动装配功能。简单概括其自动配置的原理:由@SpringBootAppliction组合注解中的@EnableAutoConfiguration原创 2022-09-13 08:19:15 · 1226 阅读 · 0 评论 -
怎么理解spring bean的生命周期,实际应用场景?
在传统的 Java 应用中,Bean 的生命周期很简单,使用关键字 new 实例化 Bean,当不需要该 Bean 时,由 Java 自动进行垃圾回收。Spring 中 Bean 的生命周期较复杂,可以表示为:Bean 的定义 -> Bean 的初始化 -> Bean 的使用 -> Bean 的销毁。Spring 根据 Bean 的作用域来选择管理方式。对于 singleton 作用域的 Bean,Spring 能够精确地知道该 Bean 何时被创建,何时初始化完成,以及何时被销毁原创 2022-09-11 13:37:51 · 844 阅读 · 2 评论 -
sql优化的15个小技巧
前言sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到。如果某天你负责的某个线上接口,出现了性能问题,需要做优化。那么你首先想到的很有可能是优化sql语句,因为它的改造成本相对于代码来说也要小得多。那么,如何优化sql语句呢?这篇文章从15个方面,分享了sql优化的一些小技巧,希望对你有所帮助。1 避免使用select *很多时候,我们写sql语句时,为了方便,喜欢直接使用select *,一次性查出表中所有列的数据。反例:selec原创 2022-09-10 14:36:54 · 304 阅读 · 0 评论 -
并发编程的12种业务场景
前言并发编程是一项非常重要的技术,无论在面试,还是工作中出现的频率非常高。继续聊聊并发编程这个话题。并发编程说白了就是多线程编程,但多线程一定比单线程效率更高?答:不一定,要看具体业务场景。毕竟如果使用了多线程,那么线程之间的竞争和抢占cpu资源,线程的上下文切换,也是相对来说比较耗时的操作。下面这几个问题在面试中,你必定遇到过: 你在哪来业务场景中使用过多线程? 怎么用的? 踩过哪些坑? 今天聊聊我之前在项目中用并发编程的12种业务场景,给有需要的朋友原创 2022-09-10 08:48:28 · 254 阅读 · 0 评论 -
这篇spring事务理解透了,工资直接涨10K
本文打算对spring的事务做详细分析,带大家一起探讨一下spring事务的设计原理和底层实现,希望这篇文章能够让你有所收获。一、开启事务功能1、spring开启事务有些朋友的公司可能还没有使用springboot,这里我介绍一下spring的事务开启。当然,我主要介绍的是基于注解的方式配置spring事务,由于基于xml的方式相对来说有些繁琐,并且比较古老,我在这里就不做赘述了。基于注解的方法使用起来非常简单,使@EnableTransactionManagement注解就可以开启事务原创 2022-09-09 14:24:48 · 249 阅读 · 0 评论 -
海量并发、大促活动,技术如何保障?
进阿里以来一直听说一句话:“没有经过双11峰值验证过的技术都是玩具”。虽然有些夸张,但是不可否认的是,一年一度的双11,是技术最好的孵化器,也是技术同学最向往的阅兵场。假如我很荣幸,担任今年年中大促的技术一号位,也就是技术负责人。今天就来跟大家聊一聊我们作为一名技术在大促中要去做哪些技术保障,以及如何去做。也希望大家看完,就像身临其境的感受了一次大促。也感谢大家的关注、点赞、分享。我将故事分为三大部分:事前、事中、事后,最后我们再总结。事前KO会议首先在事前,我们第一件事就是参加K原创 2022-09-09 14:05:49 · 316 阅读 · 0 评论 -
Spring Bean的生命周期
Spring Bean 的生命周期,面试时非常容易问,这不,前段时间就有个粉丝去字节面试,因为不会回答这个问题,一面都没有过。如果只讲基础知识,感觉和网上大多数文章没有区别,但是我又想写得稍微深入一点。考虑很多同学不喜欢看源码,我就把文章分为 2 大部分,前面是基础知识,主要方便大家面试和学习,后面是源码部分,对源码感兴趣的同学可以继续往后面看。不 BB,上文章目录。1. 基础知识1.1 什么是 IoC ?IoC,控制反转,想必大家都知道,所谓的控制反转,就是把 new 对象的原创 2022-09-09 13:54:44 · 108 阅读 · 0 评论 -
@Value这么多隐藏技术,你都知道吗?
前言对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了。spring给开发者提供了非常丰富的api,满足我们日常的工作需求。如果想要创建bean实例,可以使用@Controller、@Service、@Repository、@Component等注解。如果想要依赖注入某个对象,可以使用@Autowired和@Resource注解。如果想要开启事务,可以使用@Transactional注解。如果想要动态读取配置文件中的某个系统属性,可以使用@Value注解。等等,还原创 2022-09-09 10:25:30 · 274 阅读 · 0 评论 -
@Autowired的这些操作,你都知道吗?
前言最近review别人代码的时候,看到了一些@Autowired不一样的用法,觉得有些意思,特定花时间研究了一下,收获了不少东西,现在分享给大家。也许@Autowired比你想象中更强大。1. @Autowired的默认装配我们都知道在spring中@Autowired注解,是用来自动装配对象的。通常,我们在项目中是这样用的:packagecom.sue.cache.service;importorg.springframework.stereotype.Service原创 2022-09-09 10:15:53 · 869 阅读 · 0 评论 -
springboot面试杀手锏-自动配置原理
前言 随着互联网越来越流行,springboot已经成为我们无论是工作,还是面试当中,不得不掌握的技术。说起springboot笔者认为最重要的功能非自动配置莫属了,为什么这么说?如果参与过以前spring复杂项目的朋友肯定,有过这样的经历,每次需要一个新功能,比如事务、AOP等,需要大量的配置,需要导出找jar包,时不时会出现jar兼容性问题,可以说苦不堪言。 springboot的出现得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成原创 2022-09-08 15:11:19 · 522 阅读 · 0 评论 -
spring aop聊点不一样的东西
前言前几篇文章本打算写spring aop的,但是强忍着没有写(旁白:也有可能是没想好该怎么写😝),就是为了今天整个专题,因为它是spring中最核心的技术之一,实在太重要了。关于spring aop的文章网上一搜一大堆,但我想写点不一样的东西,尝试一种全新的写作风格,希望您会喜欢。从实战出发很多文章讲spring aop的时候,一开始就整一堆概念,等我们看得差不多要晕的时候,才真正进入主题。。。我却相反,没错,先从实战出发。在spring aop还没出现之前,想要在目标方法之原创 2022-09-08 08:46:28 · 144 阅读 · 0 评论 -
轻松读懂spring之 IOC的主干流程
前言最近写的几篇spring系列的文章,收到了很多读者的好评,有些读者希望我再多写几篇这方面的文章。甚至还有读者私信给我,向我请教看spring源码的方法,为此我打算写一个spring源码解读的系列,回馈给一直支持我的粉丝们。不知道你有没有这些经历: 想看spring的源码无从下手 spring源码太多,看着看着就跟丢了 不知道哪些是主要的,哪些是次要的 前几天还记得,今天就忘了 spring源码很复杂,说实话这类文章不好写,想把它讲清楚很难,写着写着篇幅会很原创 2022-09-08 08:54:18 · 257 阅读 · 0 评论 -
spring中12种定义bean的方法,你都知道哪几种?
前言在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜。我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工作中的多种业务场景。那么问题来了,你知道spring中有哪些方式可以定义bean?我估计很多人会说出以下三种:没错,但我想说的是以上三种方式只是开胃小菜,实际上spring的功能远比你想象中更强大。各位看官如果不信,请继续往下看。1. xml文件配置bean我们先从xml配置be原创 2022-09-09 10:00:53 · 922 阅读 · 0 评论 -
spring中那些让你爱不释手的代码技巧(续集)
一. @Conditional的强大之处不知道你们有没有遇到过这些问题: 某个功能需要根据项目中有没有某个jar判断是否开启该功能。 某个bean的实例化需要先判断另一个bean有没有实例化,再判断是否实例化自己。 某个功能是否开启,在配置文件中有个参数可以对它进行控制。 如果你有遇到过上述这些问题,那么恭喜你,本节内容非常适合你。@ConditionalOnClass问题1可以用@ConditionalOnClass注解解决,代码如下:public cla原创 2022-09-09 08:21:33 · 528 阅读 · 0 评论 -
spring中这些能升华代码的技巧,可能会让你爱不释手
前言最近越来越多的读者认可我的文章,还是件挺让人高兴的事情。有些读者私信我说希望后面多分享spring方面的文章,这样能够在实际工作中派上用场。正好我对spring源码有过一定的研究,并结合我这几年实际的工作经验,把spring中我认为不错的知识点总结一下,希望对您有所帮助。一 如何获取spring容器对象1.实现BeanFactoryAware接口@Servicepublic class PersonService implements BeanFactoryAware {原创 2022-09-08 14:47:59 · 327 阅读 · 0 评论