Spring
-
抢先了解:阿里巴巴面试必问!Spring设计思想解析
我们可以看到,Spring框架的设计思想主要包括IOC控制反转、DI依赖注入和AOP动态代理。这些设计思想使得Spring成为了一个功能强大、灵活性高、扩展性好的企业级应用开发框架,深受广大开发者的喜爱和追捧。
-
Spring中Cron表达式的优雅实现方案
我们既可以通过application.properties配置文件配合@Value注解的方式指定任务的Cron表达式,亦可以通过CronTrigger从数据库或者其他任意存储中间件中加载并注册定时任务。这是 Spring 提供给我们的可变的部分。
-
Spring事件如何异步执行?
从Spring 4.2开始,事件基础设施得到了显著改进,并提供了基于注释的模型以及发布任意事件的能力(也就是说,不一定是从ApplicationEvent扩展的对象)。当这样的对象被发布时,我们将它包装在一个事件中。
-
面试官:说说线程池的工作原理?
Spring 项目中,会使用代码可读性更高的 ThreadPoolTaskExecutor 来创建线程池,虽然它的底层也是通过 ThreadPoolExecutor 来实现的,但 ThreadPoolTaskExecutor 可读性更高,因为它不需要在构造方法中设置参数,而是通过属性设置的方式来设置参数的,所以可读性更高。
-
Spring Boot外部接口调用:使用RestTemplate与WebClient操控HTTP
我们使用了WebClient.Builder来构建WebClient实例,然后使用链式调用发起GET请求。这种方式更加灵活,并且支持响应式编程。选择使用RestTemplate还是WebClient取决于个人偏好和项目需求。
-
本篇文章将带你真正的搞定SpringMVC工作原理
参数解析器的作用就是用来解析通过请求URI找到对应的处理器方法(PackMethodHandler)。也就是从上面PackHandlerMapping类中保存到Map集合中的通过请求的URI找到对应的PackMethodHandler对象。
-
Spring Boot 3核心技术与最佳实践
Spring Boot支持将应用程序打包成独立的可执行JAR文件,这意味着应用程序不再依赖于外部的应用服务器。开发者可以通过命令行或脚本来启动应用程序,从而简化了部署和管理的流程,并且可以更方便地在不同环境中进行部署和迁移。
-
Spring最新HTTP接口调用工具RestClient
如果在构建RestClient时没有指定请求工厂,它将使用classpath中提供的Apache或Jetty HttpClient。否则,如果加载了java.net.http模块,它将使用Java的HttpClient。
-
当未指定且存在多个构造器,实例化对象时Spring如何选择?
在本文中,我们深入研究了Spring框架中的autowireConstructor方法。该方法用于在存在多个构造器时选择最合适的构造器进行实例化Bean。通过分析源代码和推断方法判断的流程,我们了解到系统是如何根据参数个数、类型和数值的匹配程度来选择最佳构造器的。
-
面试官:说说SpringAOP实现原理?
AOP 可以通过预编译方式和运行期动态代理的方式来实现,它的主要目的是降低业务逻辑的耦合性,提高程序的可重用性和开发效率。
-
从LF的初始化加载来探究Spring生命周期
LF在在Springboot自动装配过程中,对于节点的扫描和规则的初始化是不同的生命周期。正常的顺序都应该是:先注册节点再初始化规则。如果出现了先初始化规则,再注册节点,就会出现问题。LF的Springboot的自动装配主要用到了Spring的两个生命周期。
-
面试官:说说微服务灰度发布的底层实现?
通过 Spring Cloud 的扩展组件和自定义路由策略,开发人员可以轻松实现灰度发布功能,确保在微服务架构中安全、平滑地进行版本迭代升级。
-
Spring中被放弃的@Autowired,你会用吗?
@Autowired有三种注入方式,分别为:字段(属性)注入,构造函数注入和Setter方法注入。另外,@Autowired参数注入,仅在单元测试才有意义;静态字段(属性)注入为空问题,需要结合构造函数或Setter方法注入。
-
解析Spring中的循环依赖问题:再探三级缓存(AOP)
当涉及Spring框架中动态代理的实现机制时,除了已经提到的earlySingletonObjects和singletonFactories这两个缓存外,还有一个重要的缓存值得一提,那就是earlyProxyReferences。这个缓存的作用在于记录某个原始对象是否已经进行过AOP(面向切面编程)处理。
-
SpringBoot3这些变化一定要记住了
在AuthenticationManagerResolver存在时,ReactiveUserDetailsService不再自动配置。如果应用程序依赖于ReactiveUserDetailService,尽管存在AuthenticationManagerResolver,请定义自己的ReactiveUserDetailsService bean来满足其需求。