目录

工欲善其事

实践出真知

活跃标签: linux java mysql 待分类 js springboot win10 电路 vue macOS nginx git docker maven windows idea esp32 esp8266 centos7 Mybatis-plus

存档:

标签: springboot (17)

mvc逻辑图 有更新!

该文章已经加密。

[ Springboot3X ] 使用说明01

该文章已经加密。

springboot 5个扩展点 有更新!

1、初始化器ApplicationContextInitializer ApplicationContextInitializer 是 Spring 框架中的一个接口,它允许你在 Spring 的 ApplicationContext 被刷新(refresh)之前执行一些自定义的初始化操作。通常,这在你需要在 Spring 的 bean 定义被加载和解析之前执行一些特定的逻辑时非常有用。 使用场景 修改环境属性:你可以使用 ApplicationContextInitializer 来修改 Spring 的环境属性,例如添加或覆盖属性源。 注册自定义的 BeanPostProcessor:在 ApplicationContext 被刷新之前,你可能需要注册自定义的 BeanPostProcessor。 执行一些早期的初始化操作:有些操作需要在 Spring 容器完全初始化之前执行,例如初始化某些资源或执行一些预加载的任务。 如何使用 要使用 ApplicationContextInitializer,你需要实现该接口,并重写 initialize 方法。然后,你需要将这个实现类注册到 ....

SpringBoot 16个有用的扩展接口

Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。 我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生命周期也能促进我们加深对spring的理解。业务代码也能合理利用这些扩展点写出更加漂亮的代码。 在网上搜索spring扩展点,发现很少有博文说的很全的,只有一些常用的扩展点的说明。 所以在这篇文章里,我总结了几乎Spring & Springboot所有的扩展接口,以及各个扩展点的使用场景。并且整理出了一个bean在spring内部从被加载到最后初始化完成所有可扩展点的顺序调用图。从而我们也能窥探到bean是如何一步步加载到spring容器中的。 可扩展的接口启动调用顺序图 以下是我整理的....

springboot启动参数解释

Java在启动时参数在jar文件的位置与效果有关,如: # 当参数spring.profiles.active放在前面时需要加-D java -jar -Dspring.profiles.active=prod ./springboot-jvm-params-1.0-SNAPSHOT.jar #而放在后面只需要写spring.profiles.active这样子 java -jar ./springboot-jvm-params-1.0-SNAPSHOT.jar --spring.profiles.active=prod --myParam='test' 不过要注意,参数的加载顺序,如下:配置文件变量 < JVM系统变量 < 命令行参数(注意:优先级由低到高,非常多的启动命令中传参也是这个道理) 测试配置的参数如下: /usr/local/jdk/jdk1.8.0_261/bin/java -jar -server \ ## 服务模式,linux默认是server模式,window默认是client参数 -XX:+HeapDumpOnOutOfMemoryError \ .....

springboot启动时加载外部jar包

一、打包时不包含依赖 修改pom.xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> </plugin> </plugins> </build> 二、启动时加载外部依赖 java -cp springboot-demo.jar:lib/* org.springframework.boo.....

SpringBoot 注入静态变量的三种方式、从yml中读取参数

Spring Boot读取properties配置文件中的数据 Spring Boot最常用的3种读取properties****配置文件中数据的方法: 1、使用@Value注解读取 读取properties配置文件时,默认读取的是application.properties。 application.properties: import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class GatewayController { @Value("${demo.name}") private String name; @Value("${demo.age}") private String age; @RequestMapping(....

SpringSecurity + MockMvc写单元测试(包括认证,授权,模拟Cookie)

写在前面 Spring Security 是一个权限控制框架,所有的接口都是基于当前用户角色,身份等,授权访问,在开发时,要先登陆,才能测试需要授权的接口, 但是如何写单元测试,测试授权的接口呢 ? 需要测试依赖,引包, 12345678910<dependency>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<groupId>org.springframework.boot</groupId>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<artifactId>spring-boot-starter-test</artifactId>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<scope>test</scope>&am....

spring boot maven 多模块项目依赖的类maven打包时失败

问题背景 最近针对一个老的单体spring boot项目进行多模块拆分,拆分为三个模块 xx-a, xx-b,xx-core,其中a,b两个模块都依赖core模块,拆分过程中很简单就是老的代码都先放到a模块,把service,entity,mapper都抽到core,然后整体作为a的依赖。项目起初看起来很正常,但是通过maven打包,则提示a模块中依赖的core 模块中的java 类找不到,但是IDEA没报错啊,也能点击链接过去,后来发现父级模块的maven build plugin为: <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> 问题就是出在这个plugin上,父级模块应该使用maven插件而不是这个 <plugins> <plugin> <!-- 指定JDK编译版本 --> <groupI.....

jackson遇上LocalDateTime之后的那些破事

写项目的时候发现 Date里边好多方法不在被推荐使用了,有个 LocalDateTime 用起来还蛮方便的,但是前后端传值的时候老出问题,如下: "createTime": { "nano": 0, "monthValue": 3, "hour": 17, "minute": 33, "second": 10, "dayOfMonth": 17, "dayOfWeek": "THURSDAY", "dayOfYear": 76, "year": 2022, "month": "MARCH", "chronology": { "id": "ISO", "calendarType": "iso8601" } }, "scoreTime": { "nano": 0, "monthValue": 3, "hour": 17, "minute": 57, "second": 52, "dayOfMonth": 17, "dayOfWeek": "THURSDAY", "dayOfYear": 76, "year": 2022, "month": "MARCH", "chronology": { ....

LocalDateTime 在springboot中接收值的处理

之前的Date类型好像在Java 中不推荐使用了J8之后出现了LocalDateTime 解决MVC接收参数有两种方法: 1、直接在Bean的字段上添加注解 @TableField(exist = false) @DateTimeFormat(iso =DateTimeFormat.ISO.DATE)//Date是只要日期 private LocalDate createTimeQuery; ISO内容如下: enum ISO { /** * The most common ISO Date Format {@code yyyy-MM-dd}, * e.g. "2000-10-31". / DATE, /* * The most common ISO Time Format {@code HH🇲🇲ss.SSSXXX}, * e.g. "01:30:00.000-05:00". / TIME, /* * The most common ISO DateTime Format {@code yyyy-MM-dd'T'HH🇲🇲ss.SSSXXX}, * e.g. "2000....

Springboot 项目启动的几种方式

代码中启动的那几种就不说了,这里说说编译完成后在执行的方式 通过 java -jar的方式启动 通过 mvn spring-boot:run 解压jar包在META-INF目录下有个 META-INF/MANIFEST.MF文件,MANIFEST.MF内容 找到Main-Class:选项 在解压的当前目录打开终端使用命令 java org.springframework.boot.loader.JarLauncher

SpringBoot的对象属性注入

1、在需要注入的实体类上添加注解 @ConfigurationProperties(prefix="bean") @Component public class JDConfigBean { /** * 读取身份证信息接口 */ private String urlOfReadIDCard; } 2、在application中添加对应配置 如下 jd-config: urlOfReadIDCard: 1 3、在需要注入的实体类中直接注入即可 @Autowired JDConfigBean jdConfigBean;

Spring boot实现监听Redis key失效事件

开启redis key过期提醒 修改redis相关事件配置。找到redis配置文件redis.conf,只需修改配置文件redis.conf中的:notify-keyspace-events** Ex**,默认为notify-keyspace-events "", 查看“notify-keyspace-events”的配置项,如果没有,添加“notify-keyspace-events Ex”,如果有值,添加Ex,重启redis。 相关参数如图: K:keyspace事件,事件以__keyspace@<db>__为前缀进行发布; E:keyevent事件,事件以__keyevent@<db>__为前缀进行发布; g:一般性的,非特定类型的命令,比如del,expire,rename等; $:字符串特定命令; l:列表特定命令; s:集合特定命令; h:哈希特定命令; z:有序集合特定命令; x:过期事件,当某个键过期并删除时会产生该事件; e:驱逐事件,当某个键因maxmemore策略而被删除时,产生该事件; A:g$lshzxe的别名,因此”AKE”意味着所有....

策略模式 在 SpringBoot 中使用

场景:当我们接收到一些数据需要对其进行处理时,由于它们来自于不同的渠道(如:腾讯,头条),不同渠道所需的处理方式不同,下面我们写一个简单Demo来实现该的场景。 解决思路 实例一:简单举例 首先构建一个 GeneralChannelRule 基础规则抽象类,定义一个抽象方法process(),不同的渠道都需要实现该抽象方法。 public abstract class GeneralChannelRule { public abstract void process(); } 编写一个腾讯的规则类,定义具体对于腾讯渠道数据的处理逻辑 public class TencentChannelRule extends GeneralChannelRule @Override public void process() { // Tencent处理逻辑 } } 编写一个头条的规则类,定义具体对于头条数据的处理逻辑 public class TouTiaoChannelRule extends GeneralChannelRule @Override public void process(......

Springboot 参数校验

@Valid 用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。 @RestController @RequestMapping("/user") public class UserController { @PostMapping public User create (@Valid @RequestBody User user) { System.out.println(user.getId()); System.out.println(user.getUsername()); System.out.println(user.getPassword()); user.setId("1"); return user; } } 然后在 User 类中添加验证信息的要求: public class User { private String id; @NotBlank(message = "密码不能为空") private String password; } @NotBlank 注解所指的 ......

Spring 注解整理(个人理解)

顺序不分前后哈就是遇到哪个写哪个记录下 @Cacheable 缓存注解 当返回值为null的时候不缓存 unless = "#result == null" 的意思就是,当返回值为null时,就不缓存 @Cacheable(value = "test:user", key = "#username", unless = "#result == null")