
spring
文章平均质量分 59
一只小小狗
大家好我是练习时长2年半的程序员
展开
-
Mysql实现分布式锁
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。原创 2024-03-10 16:42:29 · 705 阅读 · 0 评论 -
远程调用后 List为什么会转换成LinkedHashMap
因此,为了能够正确地反序列化数据,接收方通常会将数据反序列化为一种更通用的类型,如 LinkedHashMap。具体来说,当你将一个对象序列化为 JSON 时,对象的类信息(包括泛型参数)会丢失,只剩下字段的名字和值。当你将 JSON 反序列化为对象时,如果没有提供具体的目标类,反序列化库(如 Jackson、Gson 等)通常会选择一个通用的类(如 LinkedHashMap)来存储字段的名字和值。,欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。原创 2023-12-06 19:33:44 · 1019 阅读 · 0 评论 -
--enable-preview JDK预览新功能运行打包
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。以下这段代码是无法运行的。启动成功,并且可以打包。原创 2023-12-05 17:45:52 · 800 阅读 · 0 评论 -
Type definition error: [simple type, class xxx.xxx.xxx]; nested exception is com.fasterxml.jackson.d
这个错误是因为 Jackson 试图将 JSON 数据反序列化为 XXX类的实例,但是 XXX是一个接口或抽象类,Jackson 不知道应该实例化哪个具体的类。一种解决方法是创建一个 XXX 的具体实现类,并告诉 Jackson 使用这个类来反序列化 JSON 数据。你可以使用 @JsonDeserialize 注解来实现这个目标。// ...// 实现 HistoricProcessInstance 接口的方法我的Github地址。原创 2023-12-04 17:24:02 · 3031 阅读 · 0 评论 -
Spring支持哪些Aware接口?
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。这两个的区别不如说是ApplicationContext和BeanFactory的区别。原创 2023-05-26 12:19:30 · 939 阅读 · 0 评论 -
Spring框架中有哪些不同类型的事件
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。原创 2023-05-26 12:16:53 · 1015 阅读 · 0 评论 -
Spring事务的实现方式
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。Spring事务的实现方式主要有两种:编程式事务管理和声明式事务管理。Spring事务是和数据库事务保持一致。原创 2023-05-26 12:16:05 · 1228 阅读 · 0 评论 -
自动 装配
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。原创 2023-05-26 12:16:51 · 1141 阅读 · 0 评论 -
Spring如何解决循环依赖问题
Spring在单例模式下的setter方法依赖注入引起的循环依赖问题,主要是通过二级缓存和三级缓存来解决的,其中三级缓存是主要功臣。第二种setter方法(多例)的情况下,每一次getBean()时,都会产生一个新的Bean,如此反复下去就会有无穷无尽的Bean产生了,最终就会导致OOM问题的出现。在Spring中,只有第(3)种方式的循环依赖问题被解决了,其他两种方式在遇到循环依赖问题时都会产生异常。第一种构造方法注入的情况下,在new对象的时候就会堵塞住了,其实也就是”先有鸡还是先有蛋“的历史难题。原创 2023-05-26 12:14:34 · 1504 阅读 · 0 评论 -
Spring的Bean的作用域
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。原创 2023-05-26 12:15:17 · 1664 阅读 · 0 评论 -
Spring的Bean的生命周期
对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化。①如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,传入Bean的名字;当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法;原创 2023-05-26 12:13:38 · 2574 阅读 · 0 评论 -
Spring框架中的Bean是线程安全的么?如果线程不安全,那么如何处理?
【代码】Spring框架中的Bean是线程安全的么?如果线程不安全,那么如何处理?原创 2023-05-25 21:44:38 · 374 阅读 · 0 评论 -
BeanFactory和ApplicationContext有什么区别?
(1)BeanFactory是Spring里面最底层的接口,是IoC的核心,定义了IoC的基本功能,包含了各种Bean的定义、加载、实例化,依赖注入和生命周期管理。,欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。是Spring的两大核心接口,都可以当做Spring的容器。和ApplicationContext。原创 2023-05-25 21:43:55 · 1859 阅读 · 0 评论 -
IOC 和 AOP 的联系和区别
IoC让相互协作的组件保持松散的耦合,而AOP编程允许你把遍布于应用各层的功能分离出来形成可重用的功能组件。,欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。原创 2023-05-25 21:43:12 · 156 阅读 · 0 评论 -
JDK动态代理和CGLIB动态代理
JDK动态代理只提供接口的代理,不支持类的代理,要求被代理类实现接口。JDK动态代理的核心是InvocationHandler接口和Proxy类,在获取代理对象时,使用Proxy类来动态创建目标类的代理类(即最终真正的代理类,这个类继承自Proxy并实现了我们定义的接口),当代理对象调用真实对象的方法时,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。args 是被代理目标实例某个方法的具体入参, 在方法反射调用时使用。原创 2023-05-25 21:43:25 · 2964 阅读 · 0 评论 -
JDK动态代理和CGLIB动态代理
JDK动态代理只提供接口的代理,不支持类的代理,要求被代理类实现接口。JDK动态代理的核心是InvocationHandler接口和Proxy类,在获取代理对象时,使用Proxy类来动态创建目标类的代理类(即最终真正的代理类,这个类继承自Proxy并实现了我们定义的接口),当代理对象调用真实对象的方法时,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。args 是被代理目标实例某个方法的具体入参, 在方法反射调用时使用。原创 2023-05-25 21:42:54 · 2075 阅读 · 0 评论 -
Spring-AOP是什么
(2)Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是每次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。面向切面编程,是对OOP的补充,它允许开发者定义横向关系,将系统中的关注点分离出来形成一个独立的模块,这个模块被称为切面,它的作用是与业务逻辑无关的,但是又为业务逻辑模块所共同调用。AOP实现的关键在于 代理模式,AOP代理主要分为静态代理和动态代理。原创 2023-05-25 21:41:56 · 2987 阅读 · 0 评论 -
DI是什么
欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。依赖注入,指的是由Spring容器在运行期间,动态地将某种依赖关系注入到对象之中。原创 2023-05-25 21:41:12 · 2997 阅读 · 0 评论 -
Spring-IOC是什么
Spring-IOC是Spring框架的核心,是一个容器,它负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。,欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。原创 2023-05-25 21:40:38 · 2939 阅读 · 0 评论 -
IOC初始化 IOC启动阶段 (Spring容器的启动流程)
[toc](IOC初始化 IOC启动阶段 (Spring容器的启动流程))原创 2023-05-25 21:36:54 · 2383 阅读 · 0 评论 -
Spring相关面试题(Spring核心)
实现InitializingBean Or DisposableBean接口,分别实现afterPropertiesSet()和destroy()方法,完成bean的初始化和销毁实现BeanPostProcessor接口,分别实现postProcessBeforeInitialization()和postProcessAfterInitialization()方法,完成bean的初始化前后的处理工作执行步骤:↓↓↓destroy()原创 2023-05-25 21:35:41 · 1846 阅读 · 0 评论 -
spring security使用iframe拒绝访问
【代码】spring security使用iframe拒绝访问。原创 2023-03-28 10:12:35 · 300 阅读 · 0 评论 -
Java获取IP地址,HttpServletRequest
可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址,如:X-Forwarded-For:192.168.1.32, 192.168.1.45, 192.168.1.12,答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。用户真实IP为: 192.168.1.32。原创 2023-03-14 15:40:28 · 403 阅读 · 0 评论 -
druid连接泄漏GetConnectionTimeoutException: wait millis 60000, active 5, maxActive 5, creating 0
连接泄漏GetConnectionTimeoutException: wait millis 60000, active 5, maxActive 5, creating 0druid中maxActive:5initialSize:5当活动的连接数与最大连接数相同,连接池用完了,在等待60秒后,没有新连接可用,然后超时了。当程序存在缺陷时,申请的连接忘记关闭,这时候,就存在连接泄漏了。比如Connection connection = jdbcTemplate.getDataSource().原创 2022-04-24 15:41:42 · 5630 阅读 · 0 评论 -
SpringBoot 打包成的可执行jar不能被其他项目依赖的问题
springboot默认可执行jar如果正常打包Springboot项目会打成一个可执行jar,并且里面会有全部的依赖jar。就是上面的拥有BOOT-INF文件。这样的可执行jar是无法被其他项目进行pom依赖使用的。不可执行jar如果非要将 Spring Boot 打包成一个普通 jar 被其他项目依赖,技术上来说,也是可以的,给 spring-boot-maven-plugin 插件添加如下配置:<build> <plugins> <plugin&g原创 2022-04-13 18:04:14 · 2252 阅读 · 1 评论 -
@Controller和@RestController的区别?
@RestController = @ResponseBody + @Controller@RestController如果使用@RestController ,则Cotroller层中无法返回jsp页面、html页面。也就是说视图解析器InternalResourceViewResolver无法起作用。返回的内容就是返回JSON,XML或自定义mediaType内容到页面。@Controller如果使用@Controller,则会返回调用视图解析器InternalResourceViewRes.原创 2022-02-23 17:49:19 · 177 阅读 · 0 评论 -
异步的解释(Springboot为例@Async)
异步和并发并发:对多任务的并行执行的支持机制。多任务的消费机制。多任务的处理机制;异步:一种通信机制;分流与合并机制。Springboot中的并发由于tomcat会分配多线程,所以此时有多个请求一起访问时会形成。同时处理多个请求任务的并发现象。Spring中的异步 @Async给方法上注释@Async 开启异步正常的一个请求要走的流程服务器处理完需要2s才能完成,但是当在保存的service层开启异步,也就是另开一个线程专门处理保存这件事,而controller直接返回给客户端保存原创 2022-02-23 10:42:16 · 562 阅读 · 0 评论 -
深入(浅层底层)理解springMVC工作流程
1.DispatcherServlet前端控制器(发送请求->)为什么使用前端控制器的效果最后和servlet一样?往底层走 DispatcherServlet继承了FrameworkServletpublic class DispatcherServlet extends FrameworkServletFrameworkServlet 又继承了 HttpServletBeanpublic abstract class FrameworkServlet extends HttpServ原创 2020-11-09 21:11:53 · 149 阅读 · 0 评论 -
为了理解适配器、处理器controller,自定义一个适配器处理器。javax.servlet.ServletException: No adapter for handler
首先我们需要知道springmvc的底层运行工作流程当一个请求进来之前,SpringMVC中的核心组件会一起配合来完成本次请求的处理:1. 请求被前端控制器(DispatcherServlet)接收到2. 前端控制器(DispatcherServlet)根据映射器(HandlerMapping)中配置的映射关系,将这个请求转交给真正能够处理客户端请求的处理器(Controller/Headler) 3. 处理器(Controller/Headler)通过适配器(HandlerAdaptor),执行原创 2020-11-09 20:38:04 · 1485 阅读 · 1 评论 -
Spring全局异常处理 自定义异常
GlobalExceptionHandling1. 自定义业务异常类2. 创建统一的返回体3. 枚举 创建统一异常码4. 创建全局异常处理类1. 自定义业务异常类/** * 自定义service层异常类 RuntimeException 可以不捕获也没事 */public class ServiceException extends RuntimeException { private static final long serialVersionUID = 1L; private原创 2021-08-07 15:51:55 · 752 阅读 · 0 评论 -
logback日志配置
resources目录下<?xml version="1.0" encoding="UTF-8"?><configuration> <property name="LOG_HOME" value="./logs" /> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.cl原创 2021-08-07 15:44:05 · 212 阅读 · 0 评论 -
@ControllerAdvice注解
@ControllerAdvice@ControllerAdvice注解主要用法@ExceptionHandler注解标注的方法:用于捕获Controller中抛出的不同类型的异常,从而达到异常全局处理的目的;@InitBinder注解标注的方法:用于请求中注册自定义参数的解析,从而达到自定义请求参数格式的目的;@ModelAttribute注解标注的方法:表示此方法会在执行目标Controller方法之前执行 。在Spring里,我们可以使用@ControllerAdvice来声明一些全局性的东西,最原创 2021-08-07 15:24:29 · 322 阅读 · 0 评论 -
SpringBoot或者SpringCloud报错 Failed to auto-configure a DataSource: ‘spring.datasource.url
报错信息如下:***************************APPLICATION FAILED TO START***************************Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a sui原创 2021-08-07 14:16:05 · 474 阅读 · 0 评论 -
Field injection is not recommended(不再推荐使用字段注入)
Field injection is not recommended(不再推荐使用字段注入)1.依赖注入的类型有3种1.1基于构造函数的依赖注入1.2基于Setter的依赖注入1.3基于属性的依赖注入2.基于字段的依赖注入缺陷不允许声明不可变域容易违反单一职责设计原则与依赖注入容器紧密耦合隐藏依赖关系3.总结spring framerwork 4.0以后开始出现的,spring 4.0开始就不推荐使用属性注入,改为推荐构造器注入和setter注入。1.依赖注入的类型有3种1.1基于构造函数的依赖注入原创 2021-08-05 19:56:29 · 495 阅读 · 0 评论 -
Encountered invalid @Scheduled method ‘executeSendAskForLeavePerson‘: ‘initialDelay‘ not supported f
“initialDelay”不支持用于cron触发器@Scheduled 中解决方案本来想使用cron表达式和initialDelay属性一同使用,但是报错@Scheduled 中ScheduledTasksBeanDefinitionParser但是代码逻辑中无法一起使用解决方案@Scheduled(initialDelay = 0, fixedRate=1000*60*5)一启动就开始运行,并且设置间隔时间...原创 2021-08-02 14:40:59 · 1575 阅读 · 0 评论 -
spring事务的四种隔离级别
spring事务的四种隔离级别原创 2020-12-18 16:29:48 · 7549 阅读 · 0 评论 -
spring事务传播机制
spring事务传播机制和隔离级别1.事务传播是什么?2.事务传播类型枚举Propagation3.七种事务传播行为,案例理解①REQUIRED(Spring默认传播事务)②SUPPORTS③MANDATORY④REQUIRES_NEW⑤NOT_SUPPORTED⑥NEVER⑦NESTED1.事务传播是什么? 假如有A,B两个方法,方法A有事务,方法B无事务。这时,用调用方法A而方法A会调用方法B,无事务方法B就会对A产生影响,相反事务方法A也会对B产生影响。这种影响具体是什么就由两个方法所定义的原创 2020-12-17 18:43:52 · 1300 阅读 · 0 评论 -
我对SpringMVC工作流程的理解
SpringMVC组件核心组件:DispatcherServlet(分发器)前端控制器。用来过滤客户端发送过来,想要进行逻辑处理的请求。Controller/Handler开发者自定义,用来处理用户请求,返回视图HandlerMapping处理器映射器(映射器),DispatcherServlet接受到了客户端请求的URL后,根据一定规则转发给Handler,匹配由HandlerMapping决定。HandlerAdaptor处理器适配器(适配器),用来适配每一个要执行的Handler对象原创 2020-11-09 19:46:40 · 274 阅读 · 0 评论 -
聊聊我对spring的了解,理解
Spring 是春天是java开发在,特别是web开发,javaEE企业级开发的春天。1.方便解耦,简化开发通过了IOC容器,一个控制反转,进行解耦,使得开发更加的灵活。2.AOP编程的支持面向切面编程,就算将一类业务抽出来,进行统一装配。3.将事务抽出用AOP思想 将事务抽出来,托管给spring。4.方便测试程序在spring中,测试不在昂贵,支持junit4和junit5,进行单元测试。5.集成了各种框架spring降低了各种框架的使用难度,对Hibernate、Stru原创 2020-11-09 19:24:47 · 257 阅读 · 0 评论