Spring Boot
文章平均质量分 71
Spring Boot
°Fuhb
要比别人得到更多,就要付出比别人更多的努力
展开
-
Spring AOP实现原理解析
1原创 2021-03-06 22:25:51 · 610 阅读 · 1 评论 -
Spring重写BeanDefinitionRegistryPostProcessors进行扩展
文章目录1. 前言2. PostProcessor 的用途1. 前言最近项目中遇到这么个问题,公司底层封装的框架有UserService(接口)和 UserServiceImpl(实现类)。基于此框架开发的项目,通过如下代码就能直接从Spring容器取出 UserServiceImpl 对象:@Autowiredprivate UserService userService;现在有个项目A,UserService.save方法不满足项目需求。因此在项目中重写save方法,并且不能修改框架代码。思原创 2021-03-02 12:44:56 · 492 阅读 · 0 评论 -
Spring扫描类过程解析和案例
1. 前言原创 2021-03-03 23:30:13 · 1402 阅读 · 2 评论 -
SpringBoot实现Redis分布式锁
前言当不同的进程,必须以独占资源的方式实现资源共享,就需要用到分布式锁。安全和稳定性分布式锁的实现,必须满足以下2个特性独享互斥:在任意一个时刻,只能有一个客户端持有锁无死锁:既然有加锁,则必须存在解锁。即使持有锁的客户端崩溃宕机,锁仍然允许被其他客户端获取,不能造成无限期的等待例子1@Autowiredprivate StringRedisTemplate stringRedisTemplate;@GetMapping("/lock")public void lock1() th原创 2020-09-16 14:18:01 · 1207 阅读 · 0 评论 -
Spring 使用注解@DependsOn控制Bean加载顺序
文章目录1. 前言2. 代码实现1. 前言默认情况下,Spring加载Bean的顺序是不确定的(或者可以理解为,按编译后的class文件顺序加载)。当我们需要控制Bean加载顺序以满足特定的需求时,@DependsOn就派上用场了。假设需求场景:C类加载时要从缓存读取数据,D类加载时会初始化缓存数据。因此,我们必须控制D类优先加载,否则C读到的缓存会是空的。2. 代码实现先验证没有加 @DependsOn 的效果创建缓存类 MyCachepublic class MyCache { pri原创 2021-02-25 16:12:16 · 1086 阅读 · 2 评论 -
Spring @Import 注解使用详解
1. @Import 作用将Bean实例加入IOC容器管理,常见的有以下几种方式:@Controller、@Service、@Repository、@Component、@Configuration 标记的类,并且被扫描到@Bean,导入的第三方包里的组件@Import,快速给容器导入一个组件@Import 导入组件有三种方式:@Import(Class<?>[] values):参数是组件类的class,也可以传数组对象导入多个组件2. @Import 直接导入...原创 2021-02-25 09:28:34 · 257 阅读 · 1 评论 -
调试Spring源码 5.2.2.RELEASE
1. 下载Gradle参考这篇文章下载安装Gradle:https://blog.csdn.net/qq_28834355/article/details/109165291验证是否安装成功:gradle -v2. 下载 Spring 源码github地址:https://github.com/spring-projects/spring-framework选择自己需要的版本下载(我这边用的是5.2.2.RELEASE),如果下载超时,最好使用码云下载。然后解压,进入解压后的源码根目录,执行原创 2021-02-23 21:08:48 · 615 阅读 · 0 评论 -
SpringBoot使用OpenOffice将word转成pdf
文章目录安装引用依赖创建操作类 OfficeToPdf注意事项安装参考这篇文章:Linux环境下安装OpenOffice 4.1.8引用依赖这边 jodconverter 用的是 2.2.2 版本,Maven库没有,需要自己去网上下载我这边是引用本地JAR,这是因为产生了大量WARN日志(找不到JAR包之类的)。虽然不影响使用,但是看着不舒服,所以把相关JAR放到同一个目录下引用了。 <!--jodconverter 开始 --> <depen原创 2021-01-27 11:44:29 · 890 阅读 · 0 评论 -
SpringBoot连接Redis集群
文章目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试1. 依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>2. 修改配置文件server.port=100#redis集群节点信息spring.redi原创 2021-01-19 22:28:12 · 1123 阅读 · 0 评论 -
SpringBoot+Redis防止接口重复提交
111原创 2021-01-15 21:08:41 · 1296 阅读 · 0 评论 -
SpringBoot 序列化与反序列化日期类型参数
简介当使用 RequestBody 接收Json类型参数时,LocalDateTime序列化需要单独在字段配置。另外,接口返回的对象包含Date、LocalDateTime,也需要在字段配置@JsonFormat。因此,最好的方式是全局配置,让开发人员无感地像普通参数那样使用,这是最方便的。实现下面这个方法可以直接用,处理了Date、LocalDate、LocalDateTime三大类型@Configurationpublic class JasonConf { @Bean @原创 2021-01-01 15:46:01 · 826 阅读 · 0 评论 -
SpringBoot 使用WebMvcConfigurer处理请求
简介WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口,WebMvcConfigurerAdapter 抽象类是对WebMvcConfigurer接口的简单抽象(增加了一些默认实现),但在在SpringBoot2.0及Spring5.0中WebMvcConfigurerAdapter原创 2021-01-01 15:36:27 · 912 阅读 · 0 评论 -
CAS Server(三):配置MySQL数据库验证用户名密码
1. 配置数据库#创建CAS数据库CREATE DATABASE cas;#创建用户表CREATE TABLE `t_user` ( `id` int(0) NOT NULL AUTO_INCREMENT, `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `password` varchar(50) CHARACTER SET utf8mb4 COL原创 2020-11-13 16:59:25 · 343 阅读 · 0 评论 -
Spring AOP讲解(Pointcut、Before、Around、AfterReturning、After)
AOP依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>@Pointcut定义切入点,有以下2种方式:方式一:设置为注解@LogFilter1标记的方法,有标记的方法触发该AOP,没有标记就没有。@Aspect@C原创 2020-08-24 16:27:16 · 5012 阅读 · 1 评论 -
CAS Server(二):基于SpringBoot搭建客户端
参考资料https://blog.csdn.net/oumuv/article/details/84317757原创 2020-11-12 10:28:00 · 1142 阅读 · 0 评论 -
CAS Server(一):搭建服务端
1. 下载 CAS Server打开地址:https://github.com/apereo/cas/releases/tag/v4.0.0,拉到最下面找到并下载 cas-server-4.0.0-release.zip2. 安装 CAS Server提取zip包里面的这个文件:/cas-server-4.0.0/modules/cas-server-webapp-4.0.0.war把提取出来的这个文件改名为 cas.war将 cas.war 拷贝到 tomcat 目录的 webapps 文件原创 2020-11-11 18:10:59 · 364 阅读 · 0 评论 -
SpringBoot 自定义Kafka消息序列化和反序列化
1. 概述Kafka传输自定义的DTO对象时,不能像平时一样使用StringSerializer和StringDeserializer。这种情况需要自己实现对应DTO的序列化器和反序列化器。假设现在有个 KafkaMsgDto 类,代码如下:@Datapublic class KafkaMsgDto { private String id; private ActionEnum action; public KafkaMsgDto(){ } public原创 2020-11-10 19:44:08 · 2352 阅读 · 1 评论 -
SpringBoot @Valid各种注解使用说明
@NotEmpty:作用在String、collection、map、数组上,不能为null,size > 0@NotBlank: 只能用于String,不能为null,也不可以是" ",即trim()后长度大于0@NotNull:作用于任何类型,不能为null,可以为空@AssertTrue:必须为true@AssertFalse:必须为false@Min(value):必须为一个数字,且值大于等于指定的值@Max(value):必须为一个数字,且值小于等于指定的值@Size(max,原创 2020-11-09 17:05:57 · 1495 阅读 · 0 评论 -
SpringBoot @Cacheable缓存注解的使用
1. 引入缓存依赖 <!----> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!--这边用的是Red原创 2020-11-09 14:03:42 · 1707 阅读 · 0 评论 -
SpringBoot @Cacheable自定义KeyGenerator
1. 概述SpringBoot 使用 @Cacheable 可以方便的管理缓存数据,在不指定 key 属性的情况下,默认使用 SimpleKeyGenerator 生成 key。除此之外,我们也可以自定义实现 KeyGenerator 接口,生成自己的 key 名称策略。2. MySimpleKey 类MySimpleKey类的作用是存放参数数据,必须实现equals、hashCode。如果需要自定义key格式,同样需要实现toString接口,下面的例子是把参数用逗号分隔。public class原创 2020-11-09 11:11:50 · 3731 阅读 · 0 评论 -
SpringBoot使用StringRedisTemplate操作Redis字符串
依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.2.2.RELEASE</version></dependency>原创 2020-08-17 13:44:30 · 1672 阅读 · 1 评论 -
SpringBoot操作Redis哈希类型
概述SpringBoot操作Redis复杂对象,通常使用RedisTemplate,直接声明即可。@Autowiredprivate RedisTemplate redisTemplate;put、putAllput设置对象的单个属性值putAll设置对象的多个属性值//设置user的name、age、sex(本文所有demo都是重新初始化该对象,后面的代码没有再贴出这一块了)HashMap<String, Object> map = new HashMap<>原创 2020-08-17 16:41:28 · 3865 阅读 · 0 评论 -
SpringBoot @PostConstruct和@PreDestroy使用详解
1. @PostConstruct1.1 概述@PostConstruct标记在方法上,在当前类的实例加入到容器之前,会先执行@PostConstruct标记的方法。它的执行顺序是这样的:先执行当前类的构造函数然后执行@Autowired标记对象的初始化最后执行@PostConstruct标记的方法如果没有抛出异常,则该对象加入Spring管理容器1.2 验证执行顺序创建一个空的Spring Boot项目,这步不演示了创建TestComponent@Componentpublic原创 2020-10-21 21:21:57 · 4107 阅读 · 0 评论 -
SpringBoot使用CommandLineRunner和ApplicationRunner项目初始化事件
1. 概述在实际开发工作中,有时需要在项目启动的时候初始化资源,例如:缓存、定时任务等等。Spring Boot 提供了这样的方案,只要创建 Bean 实现CommandLineRunner或者ApplicationRunner即可。这两个的作用是相同的,只是提供的参数略有不同。如果存在多个类实现CommandLineRunner或者ApplicationRunner,可以添加 @Order 注解或者实现 Ordered 接口来控制执行顺序。2. Demo先创建一个空的 Spring Boot 项原创 2020-10-21 16:54:55 · 1488 阅读 · 0 评论 -
Spring Boot文档地址
Spring Boot 官方地址中文版本原创 2020-10-20 09:06:38 · 1073 阅读 · 0 评论 -
spring-boot-starter-parent 作用
一、你的项目 pom.xml 中有这段代码吗<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/></parent>转载 2020-09-24 10:09:45 · 6265 阅读 · 0 评论