首页
学习
活动
专区
工具
TVP
发布

程序猿杜小头

专栏作者
35
文章
25350
阅读量
16
订阅数
WebMvcConfigurer,有点东西
从本质上来看,Bean 之所以拥有高可扩展性,这主要得益于@Import、@Conditional 和 Callback Interface。@Import 注解为 Bean 带来了灵活的可插拔机制,比如众多的 EnableXXX 注解;@Conditional 注解为 Bean 带来了条件化的激活机制,比如 @ConditionalOnMissingBean 注解;Callback Interface 为 Bean 带来了灵活的定制化机制,比如 BeanPostProcessor、WebMvcConfigurer 等。
程序猿杜小头
2023-09-02
1370
AK/SK 认证模式在开放 API 中的应用
为了验证开放 API 请求的合法性,必须要对 API 请求方进行认证,一般有两种认证模式,即HTTP Basic和AK/SK。
程序猿杜小头
2023-09-02
1.1K0
Spring:全面拥抱 Jakarta Bean Validation 规范
随着JSR-303、JSR-349和JSR-380提案的相继问世,Bean Validation 规范已经从初出茅庐的 1.0 版本发展到渐入佳境的 2.0 版本。在 Eclipse 基金会接管 Java EE 之后,Bean Validation 规范成为了 Jakarta EE 的一部分,Jakarta Bean Validation 自然也就成为 Bean Validation 的新标准,目前 Jakarta Bean Validation 最新版为 3.0。Jakarta Bean Validation 目前由 Hibernate 实现,Apache BVal 感觉有些掉队了。
程序猿杜小头
2023-09-02
6530
@Autowired 与 @Resource 有何不同
@Autowired来自于 spring-beans 模块;而@Resource则来自于 jakarta.annotation-api 模块,它是 Jakarta EE 规范中的内容。虽然 @Autowired 与 @Resource 均用于实现依赖注入,但 Spring 对二者的处理逻辑是不一样的。
程序猿杜小头
2023-03-05
5720
万字长文!带你探索 Bean 加载流程
宏观地说,Bean 加载流程大致有三个阶段,分别是实例化 createBeanInstance() 、属性填充 populateBean() 和 初始化 initializeBean(),当 Bean 加载流程执行完毕,Bean 才具备使用条件!对 Bean 加载流程的探索是一段非常煎熬的旅程,你准备好了吗?
程序猿杜小头
2023-03-05
2710
细思极恐!你真的理解类加载机制吗
JVM 的操作对象是 Class 文件,JVM 把 Class 文件中描述类的数据结构加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被 JVM 直接使用的 Java 类型,这个过程被称作 JVM 的类加载机制!
程序猿杜小头
2022-12-01
5140
你好,SLF4J
作为 CV 工程师,咱们开发的应用并不总是按预期运行,为了方便排查出潜在的问题,一般会在代码中添加日志记录语句。但在 Java 刚刚问世时,日志记录方式好像除了System.out和System.err之外也没啥别的选择了,主要痛点有:1) 日志无法分级,有些日志纯属 DEBUG,在生产环境是不需要的;2) 日志内容不支持格式化,如 XML、HTML。后来,一位名叫Ceki Gülcü的大神无奈之下发布了大名鼎鼎的log4j。尽管现在 log4j 逐渐退出历史舞台,但在当时却备受 Java 开发人员的喜爱,甚至 JDK 1.4 也是借鉴了 log4j 之后,终于在官方类库中补齐了日志记录这一短板,它就是j.u.l包。
程序猿杜小头
2022-12-01
6200
Asynchronous Servlet 在 Nacos 1.X 动态配置管理中的应用
Nacos/nɑ:kəʊs/脱胎于阿里巴巴内部的 Config Server、VIPServer 和 Diamond,成长于多年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。于 2018 年正式开源,其核心特性有:服务发现、动态配置管理 和 动态 DNS 服务。
程序猿杜小头
2022-12-01
5890
一文读懂Spring Environment
如今,致力于帮助开发者用更少的代码、更快地写出生产级系统的 Spring Boot 已然成为 Java 应用开发的事实标准。在 Spring Boot 提供的众多特性中,自动配置无疑是对提升开发体验最显著的一个特性,Spring Boot 基于这一特性为开发人员自动声明了若干开箱即用、具备某一功能的 Bean。大多数情况下,自动配置的 Bean 刚好能满足大家的需求,但在某些情况下,不得不完整地覆盖它们,这个时候只需要重新声明相关类型的 Bean 即可,因为绝大多数自动配置的 Bean 都会由@ConditionalOnMissingBean注解修饰。幸运的是,如果只是想微调一些细节,比如改改端口号 (server.port) 和数据源 URL (spring.datasource.url) ,那压根没必要重新声明ServerProperties和DataSourceProperties这俩 Bean 来覆盖自动配置的 Bean。Spring Boot 为自动配置的 Bean 提供了1000多个用于微调的属性,当需要调整设置时,只需要在环境变量、命令行参数或配置文件 (application.properties/application.yml) 中进行指定即可,这就是 Spring Boot 的Externalized Configuration (配置外化) 特性。
程序猿杜小头
2022-12-01
8150
Spring Transaction,从入门到上瘾
Spring Transaction 针对JDBC API中关于事务管理这一部分进行了高级抽象,它支持两种方式的事务管理,分别是:声明式事务管理 (Declarative Transaction Management) 与 编程式事务管理 (Programmatic Transaction Management) 。声明式事务管理由@Transactional注解来承载,而编程式事务管理则由TransactionManager或TransactionTemplate来实现 (推荐使用后者) 。基于注解的声明式事务管理方式既简洁又优雅,可以有效收敛横切关注逻辑,但极尽简洁的背后却也暗藏陷阱,比如:大事务、事务未正常回滚等。相较于声明式事务管理,编程式事务管理方式对事务粒度的把控更为灵活,这往往很有必要!
程序猿杜小头
2022-12-01
3900
揭开Spring Boot自动配置的神秘面纱
Spring自2003年发布至今已有近20年的历史,在发布后的短短几年便已成为开发Java应用程序的事实标准,影响着无数国内外Java开发人员。尽管如此,Spring团队并没有放慢自己的脚步,于2014年,发布了Spring Boot。Spring Boot能用寥寥数行代码构建出一套Hello World应用程序,不费吹灰之力!这主要得益于它的两大重量级特性:起步依赖(starter dependency) 和自动配置(auto configuration);此外,Spring Boot还自带了metrics、health checks、embeded servlet container 和 externalized configuration等特性,这些都让选择Spring Boot成为了一件顺理成章的事情。可以说,Spring Boot正是Java社区十几年来所探寻的那种能够让Java开发变得趣味横生的框架。
程序猿杜小头
2022-12-01
7680
读后感 | 美团技术《如何优雅地记录操作日志》
《如何优雅地记录操作日志》是美团技术团队2021年最受欢迎的一篇技术文章,文章很有深度,强烈建议大家去品读一番。
程序猿杜小头
2022-12-01
1.5K0
WebApplicationInitializer向左,ServletContextInitializer向右
为什么要写这篇文章呢?因为笔者在读Spring相关源码时,发现WebApplicationInitializer与ServletContextInitializer拥有相同的方法签名,作用也基本一致,可不明白它俩的使用场景有啥区别,要不Spring Boot怎么会又单独设计一个ServletContextInitializer出来呢?
程序猿杜小头
2022-12-01
6700
原理解读:Spring MVC统一异常处理
当前,Spring统一异常处理机制是Java开发人员普遍使用的一种技术,在业务校验失败的时候,直接抛出业务异常即可,这明显简化了业务异常的治理流程与复杂度。值得一提的是,统一异常处理机制并不是Spring Boot提供的,而是Spring MVC,前者只是为Spring MVC自动配置了刚好够用的若干组件而已,具体配置了哪些组件,感兴趣的读者可以到spring-boot-autoconfigure模块中找到答案。
程序猿杜小头
2022-12-01
9831
嗨,CRUD BOY们,是时候掌握Spring MVC的处理流程了
Spring MVC是一款构建于Servlet API之上、基于同步阻塞I/O模型的主流Java Web开发框架,这种I/O模型意味着一个Http请求对应一个线程,即每一个Http请求都是在各自线程上下文中完成处理的;此外,Spring 5.0提供了一款基于异步非阻塞I/O模型的Java Web开发框架,即Spring WebFlux;大家不用纠结Spring官方会不会在将来的某个时间点将Spring MVC置为废弃(deprecated)态,至少目前来看,Spring MVC依然是流行的,在Spring官网关于Reactive的介绍中有一张图相当精致,与大家分享:
程序猿杜小头
2022-12-01
3640
浅谈ThreadLocal
ThreadLocal因为内存泄漏问题早已在江湖中声名远扬,引得一众开发人员的吐槽。于是,ThreadLocal 的设计者之一Josh Bloch不得不出来辟谣:ThreadLocal的设计毫无问题,而且历经数次优化后其性能越来越好,内存泄漏是由开发者误用造成的,我们不背这个锅!由此可见,ThreadLocal 是有一定上手门槛的,希望大家在读完本文后可以正确地使用它。
程序猿杜小头
2022-12-01
3750
图说Java值传递原理
Java是一门面向对象的程序设计语言,类是其基本抽象单元,而方法是类中可复用的执行单元;当一个Java方法被调用,方法参数的传递方式究竟是基于值传递还是引用传递呢?答案是:值传递 !
程序猿杜小头
2022-12-01
4290
一文读懂Spring事件机制
Spring 事件机制是为同一ApplicationContext中多个Bean之间的通信而设计的,它是观察者模式的一个典型应用。
程序猿杜小头
2022-12-01
5060
IntroductionAdvisor,真的很冷门!
Advisor是Spring AOP中的独有术语,它是一种特殊的切面 (Aspect);Advisor有两个分支,分别是PointcutAdvisor与IntroductionAdvisor。
程序猿杜小头
2022-12-01
3280
聊聊 Java SPI
SPI (Service Provider Interface) 是自 Java 1.6 引入的一种基于接口或抽象类的服务发现机制。得益于 Java SPI 机制,开发人员只需为第三方预留出 SPI 拓展接口,这样可以在不修改代码的前提下,通过增删第三方依赖来实现系统的灵活拓展。
程序猿杜小头
2022-12-01
8320
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档