<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>SPI on Matheus Oliveira</title><link>https://blog.omatheusmesmo.dev/en/tags/spi/</link><description>Recent content in SPI on Matheus Oliveira</description><image><title>Matheus Oliveira</title><url>https://blog.omatheusmesmo.dev/images/duke.svg</url><link>https://blog.omatheusmesmo.dev/images/duke.svg</link></image><generator>Hugo -- 0.146.0</generator><language>en-us</language><lastBuildDate>Sat, 13 Jun 2026 10:00:00 -0300</lastBuildDate><atom:link href="https://blog.omatheusmesmo.dev/en/tags/spi/index.xml" rel="self" type="application/rss+xml"/><item><title>Java SPI: The Built-in Superpower Every Developer Should Know</title><link>https://blog.omatheusmesmo.dev/en/posts/java-spi-serviceloader-power/</link><pubDate>Sat, 13 Jun 2026 10:00:00 -0300</pubDate><guid>https://blog.omatheusmesmo.dev/en/posts/java-spi-serviceloader-power/</guid><description>A hands-on guide to Java&amp;#39;s Service Provider Interface (SPI). Learn ServiceLoader from scratch with real code from a NES emulator&amp;#39;s mapper system, replace the manual META-INF/services file with Google AutoService, declare services with JPMS module-info, and see how Quarkus replaces runtime ServiceLoader with build-time CDI discovery.</description></item></channel></rss>