{"id":3912,"date":"2025-09-24T10:00:00","date_gmt":"2025-09-24T14:00:00","guid":{"rendered":"https:\/\/www.mymiller.name\/wordpress\/?p=3912"},"modified":"2025-09-21T10:18:52","modified_gmt":"2025-09-21T14:18:52","slug":"spring-boot-4-0-whats-next-for-the-modern-java-architect","status":"publish","type":"post","link":"https:\/\/www.mymiller.name\/wordpress\/uncategorized\/spring-boot-4-0-whats-next-for-the-modern-java-architect\/","title":{"rendered":"Spring Boot 4.0: What&#8217;s Next for the Modern Java Architect?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">A Forward-Looking Comparison of Spring Boot 3.x and 4.0<\/h2>\n\n\n\n<p>Staying on top of the rapidly evolving Java ecosystem is paramount for any software architect. The shift from Spring Boot 2.x to 3.x brought significant changes, notably the move to Jakarta EE. Now, with the horizon of Spring Boot 4.0 and Spring Framework 7.0 in sight, it&#8217;s time to understand the next wave of modernization. This article provides a strategic overview of the key differences between the current 3.x series and the upcoming 4.0 release, focusing on the changes that matter most to architects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Foundation of Spring Boot 3.x<\/h3>\n\n\n\n<p>The 3.x release train represents a stable, mature, and widely adopted platform. It solidified the shift to Jakarta EE 10, embraced a Java 17 baseline, and enhanced support for GraalVM Native Image. Key features include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Java 17 Baseline:<\/strong> The minimum requirement for all Spring Boot 3.x applications, allowing developers to use modern language features like records, sealed classes, and pattern matching.<\/li>\n\n\n\n<li><strong>Jakarta EE 10:<\/strong> The major namespace migration from <code>javax.*<\/code> to <code>jakarta.*<\/code>, a significant one-time refactoring effort for most projects.<\/li>\n\n\n\n<li><strong>AOT and Native Images:<\/strong> Continued improvements to Ahead-of-Time (AOT) compilation, making it easier to build and deploy highly efficient, low-memory native executables.<\/li>\n\n\n\n<li><strong>Observability:<\/strong> Built-in support for Micrometer and OpenTelemetry, providing a unified approach to metrics, tracing, and logging.<\/li>\n<\/ul>\n\n\n\n<p>For architects, Spring Boot 3.x has been about consolidation and maturation, providing a solid, cloud-native foundation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Anticipating Spring Boot 4.0: The Next Generation<\/h3>\n\n\n\n<p>Based on the latest roadmaps and discussions from the Spring team, Spring Boot 4.0 is shaping up to be a generational leap focused on modularity, resilience, and developer experience. Here are some of the key differences to anticipate:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Platform and Baseline Upgrades<\/h4>\n\n\n\n<p>Spring Boot 4.0 will align with Spring Framework 7.0. This brings several important baseline changes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Minimum JDK 17, Recommended JDK 25:<\/strong> While Spring Boot 3.x requires Java 17, the new release will likely recommend Java 25 as the latest LTS version, allowing developers to leverage even more recent language features and JVM improvements like Virtual Threads.<\/li>\n\n\n\n<li><strong>Jakarta EE 11 Alignment:<\/strong> The ecosystem will complete its migration, fully embracing Jakarta EE 11 specifications like Servlet 6.1 and JPA 3.2. This may necessitate updates to application servers and third-party libraries.<\/li>\n\n\n\n<li><strong>Gradle and Build Tool Enhancements:<\/strong> Expect improved Gradle integration, particularly with Kotlin builds and native image support.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">2. Enhanced Modularity and Architecture<\/h4>\n\n\n\n<p>Perhaps the most significant change for architects is the refactoring of Spring Boot&#8217;s internal codebase. Instead of bundling large, monolithic auto-configuration JARs, the framework is being broken into smaller, more focused modules.<\/p>\n\n\n\n<p>This internal modularization is designed to directly address key pain points in cloud-native development. In Spring Boot 3.x, the large auto-configuration artifacts could lead to classpath scanning overhead and an increased native-image footprint, even if an application only used a small subset of the framework&#8217;s features.<\/p>\n\n\n\n<p>By splitting auto-configurations and support code into smaller, dedicated modules (e.g., <code>org.springframework.&lt;module&gt;<\/code>), Spring Boot 4.0 delivers several benefits:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster Native Image Builds:<\/strong> The GraalVM Ahead-of-Time (AOT) processor no longer has to deal with the unnecessary hints and metadata from large, bundled artifacts. This streamlines the static analysis process, resulting in faster compilation and smaller, more efficient native executables.<\/li>\n\n\n\n<li><strong>Cleaner Dependency Management:<\/strong> The new structure provides a cleaner dependency graph. Optional integrations like Micrometer or OpenTelemetry will be in separate modules, giving you more granular control over your project&#8217;s dependencies and a clearer understanding of what is included.<\/li>\n\n\n\n<li><strong>Improved Maintainability:<\/strong> For both the Spring team and the community, this refactoring makes the framework more maintainable and composable. It allows developers to be more selective when processing configurations at runtime or during AOT compilation.<\/li>\n<\/ul>\n\n\n\n<p>The modularization extends beyond the core framework. The Spring Modulith project, for example, helps developers enforce a modular structure within their own monolithic applications, combining the benefits of microservices (like clear boundaries and isolated testing) with the simplicity and performance of a single deployment unit.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. Resilience and Declarative APIs<\/h4>\n\n\n\n<p>Spring Framework 7.0 and Spring Boot 4.0 introduce new resilience patterns and declarative APIs, moving functionality closer to the application layer.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Built-in Resilience:<\/strong> New annotations like <code>@Retryable<\/code> and <code>@ConcurrencyLimit<\/code> will be integrated directly into Spring Core, allowing you to build fault-tolerant systems without relying on external libraries like Spring Retry.\n<ul class=\"wp-block-list\">\n<li><code>@Retryable<\/code>: This annotation simplifies the process of automatically retrying failed method invocations. You can configure the number of attempts (<code>maxAttempts<\/code>), the exceptions that should trigger a retry, and the backoff strategy. For instance, you can specify a delay between retries that increases exponentially, which helps prevent overwhelming a temporarily unavailable external service.<\/li>\n\n\n\n<li><code>@ConcurrencyLimit<\/code>: This annotation provides a simple, declarative way to protect shared resources. You can apply it to a method to limit the number of concurrent invocations, which is particularly useful for controlling access to rate-limited APIs or database connections. This becomes even more critical with the adoption of Project Loom and Virtual Threads, where an application&#8217;s ability to create threads is no longer a limiting factor.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Declarative HTTP Clients:<\/strong> Taking inspiration from frameworks like OpenFeign, Spring Boot 4.0 will introduce more robust support for declarative HTTP clients via the <code>@HttpExchange<\/code> annotation. This modern approach allows developers to define a client interface with annotations, eliminating the need for a manually constructed <code>RestTemplate<\/code> or the fluent, but sometimes verbose, <code>WebClient<\/code> builder pattern.\n<ul class=\"wp-block-list\">\n<li><strong>Reduced Boilerplate:<\/strong> Instead of writing boilerplate code to set up requests and parse responses, you simply define a Java interface with methods annotated for each endpoint.<\/li>\n\n\n\n<li><strong>Improved Type Safety:<\/strong> The use of a Java interface and records for data transfer objects (DTOs) provides compile-time type safety, catching potential errors before runtime.<\/li>\n\n\n\n<li><strong>Seamless Integration:<\/strong> The new HTTP client is designed to work with both <code>WebClient<\/code> for reactive applications and the new <code>RestClient<\/code> for synchronous ones, allowing architects to choose the underlying implementation that best fits their project&#8217;s needs. The <code>HttpServiceProxyFactory<\/code> is used to create a proxy that implements your interface and handles all the underlying HTTP communication.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4. Future-Proofing with Spring AI and Cloud-Native<\/h4>\n\n\n\n<p>Spring continues to lead the way in integrating emerging technologies. For architects, the 4.0 release will provide better support for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Spring AI:<\/strong> The 4.0 release will bring significant improvements to Spring AI. Spring AI 2.0.0 will be fully compatible with Spring Boot 4.0. It will also introduce a major API redesign, making it even easier to connect to various LLM providers (like Google, OpenAI, etc.) with a consistent, portable API. This release will also enhance support for key patterns like <strong>Retrieval Augmented Generation (RAG)<\/strong> and <strong>Tool Calling<\/strong>, which are essential for building intelligent agents that can access and process an enterprise&#8217;s internal data. The new API will allow developers to define functions as <code>@Bean<\/code>s that the model can call, simplifying the integration of external systems and real-time data.<\/li>\n\n\n\n<li><strong>Native Image Improvements:<\/strong> The ongoing work on native images will continue, with a focus on improving performance and reducing build times. This release will be fully aligned with the latest <strong>GraalVM 24<\/strong>, providing better AOT processing. The modularization of Spring Boot itself will directly contribute to this by creating a smaller classpath for AOT processing, resulting in smaller, more performant native executables. This is a crucial step towards building highly scalable and performant microservices that can start in milliseconds and use a fraction of the memory of a traditional JVM application.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p>While the migration from Spring Boot 3.x to 4.0 may not be as disruptive as the <code>javax<\/code> to <code>jakarta<\/code> namespace change, it represents a pivotal evolution for the platform. The shift toward a more modular, resilient, and future-proof architecture will enable software architects to design and build even more robust and efficient solutions. This release will continue Spring&#8217;s tradition of providing a powerful, opinionated framework for the modern Java enterprise.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Forward-Looking Comparison of Spring Boot 3.x and 4.0 Staying on top of the rapidly evolving Java ecosystem is paramount for any software architect. The shift from Spring Boot 2.x to 3.x brought significant changes, notably the move to Jakarta EE. Now, with the horizon of Spring Boot 4.0 and Spring Framework 7.0 in sight, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3913,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"series":[],"class_list":["post-3912","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/09\/per-2056740_1280.avif","jetpack-related-posts":[{"id":3954,"url":"https:\/\/www.mymiller.name\/wordpress\/spring-batch\/architecting-batch-systems-with-spring-boot-4-0-and-spring-framework-7-0\/","url_meta":{"origin":3912,"position":0},"title":"Architecting Batch Systems with Spring Boot 4.0 and Spring Framework 7.0","author":"Jeffery Miller","date":"December 23, 2025","format":false,"excerpt":"With the release of Spring Boot 4.0 and Spring Framework 7.0, the batch processing landscape has evolved to embrace Java 25, Jakarta EE 11, and built-in resilience patterns. This guide provides a professional architectural blueprint for setting up a high-performance Spring Batch server. 1. Technical Baseline Java: 17 (Baseline) \/\u2026","rel":"","context":"In &quot;Spring Batch&quot;","block_context":{"text":"Spring Batch","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring-batch\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_mmtkyammtkyammtk.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_mmtkyammtkyammtk.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_mmtkyammtkyammtk.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_mmtkyammtkyammtk.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_mmtkyammtkyammtk.avif 3x"},"classes":[]},{"id":3951,"url":"https:\/\/www.mymiller.name\/wordpress\/java\/scaling-streams-mastering-virtual-threads-in-spring-boot-4-and-java-25\/","url_meta":{"origin":3912,"position":1},"title":"Scaling Streams: Mastering Virtual Threads in Spring Boot 4 and Java 25","author":"Jeffery Miller","date":"December 22, 2025","format":false,"excerpt":"As a software architect, I\u2019ve seen the industry shift from heavy platform threads to reactive streams, and finally to the \"best of both worlds\": Virtual Threads. With the recent release of Spring Boot 4.0 and Java 25 (LTS), Project Loom's innovations have officially become the bedrock of high-concurrency enterprise Java.\u2026","rel":"","context":"In &quot;JAVA&quot;","block_context":{"text":"JAVA","link":"https:\/\/www.mymiller.name\/wordpress\/category\/java\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_wqijejwqijejwqij-scaled.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_wqijejwqijejwqij-scaled.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_wqijejwqijejwqij-scaled.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_wqijejwqijejwqij-scaled.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/12\/Gemini_Generated_Image_wqijejwqijejwqij-scaled.avif 3x"},"classes":[]},{"id":3961,"url":"https:\/\/www.mymiller.name\/wordpress\/spring\/spring4\/architecting-spring-boot-4-with-official-spring-grpc-support\/","url_meta":{"origin":3912,"position":2},"title":"Architecting Spring Boot 4 with Official Spring gRPC Support","author":"Jeffery Miller","date":"January 15, 2026","format":false,"excerpt":"For years, the Spring community relied on excellent third-party starters (like net.devh) to bridge the gap between Spring Boot and gRPC. With the evolution of Spring Boot 4 and the official Spring gRPC project, we now have native support that aligns perfectly with Spring's dependency injection, observability, and configuration models.\u2026","rel":"","context":"In &quot;Spring4&quot;","block_context":{"text":"Spring4","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring\/spring4\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/01\/Gemini_Generated_Image_3yqio33yqio33yqi.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/01\/Gemini_Generated_Image_3yqio33yqio33yqi.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/01\/Gemini_Generated_Image_3yqio33yqio33yqi.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/01\/Gemini_Generated_Image_3yqio33yqio33yqi.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2026\/01\/Gemini_Generated_Image_3yqio33yqio33yqi.avif 3x"},"classes":[]},{"id":3935,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_ai\/%f0%9f%9a%80-dl4j-and-spring-boot-real-time-anomaly-detection-in-time-series-data\/","url_meta":{"origin":3912,"position":3},"title":"\ud83d\ude80 DL4J and Spring Boot: Real-Time Anomaly Detection in Time-Series Data","author":"Jeffery Miller","date":"November 25, 2025","format":false,"excerpt":"As a Software Architect, you understand that an excellent solution requires not just a powerful model, but a robust, scalable, and performant architecture for deployment. The combination of DL4J (Deeplearning4j) and Spring Boot is perfectly suited for building real-time, high-performance services, especially for a critical task like time-series anomaly detection.\u2026","rel":"","context":"In &quot;Spring AI&quot;","block_context":{"text":"Spring AI","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_ai\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/Gemini_Generated_Image_ek9cohek9cohek9c.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/Gemini_Generated_Image_ek9cohek9cohek9c.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/Gemini_Generated_Image_ek9cohek9cohek9c.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/11\/Gemini_Generated_Image_ek9cohek9cohek9c.avif 2x"},"classes":[]},{"id":3582,"url":"https:\/\/www.mymiller.name\/wordpress\/spring\/leveraging-dicom-in-spring-boot-applications\/","url_meta":{"origin":3912,"position":4},"title":"Leveraging DICOM in Spring Boot Applications","author":"Jeffery Miller","date":"November 19, 2025","format":false,"excerpt":"Leveraging DICOM in Spring Boot Applications DICOM, the cornerstone of medical imaging, is a specialized format for storing and transmitting medical images and related information. Integrating it into your Spring Boot project opens up a world of possibilities for medical applications. Let\u2019s explore how to achieve this. Understanding DICOM DICOM\u2026","rel":"","context":"In &quot;Spring&quot;","block_context":{"text":"Spring","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/x-ray-6841384_1280.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/x-ray-6841384_1280.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/x-ray-6841384_1280.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/x-ray-6841384_1280.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/x-ray-6841384_1280.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3569,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_ai\/integrating-prolog-with-spring-boot\/","url_meta":{"origin":3912,"position":5},"title":"Integrating Prolog with Spring Boot","author":"Jeffery Miller","date":"September 22, 2025","format":false,"excerpt":"Prolog, a declarative logic programming language, shines in solving specific types of problems that require knowledge representation and logical inference. Integrating Prolog with Spring Boot can bring the power of logic programming to your Java applications. 1. Setting Up Your Environment Add JPL Dependency: Include the Java Prolog Interface (JPL)\u2026","rel":"","context":"In &quot;Spring AI&quot;","block_context":{"text":"Spring AI","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/Gemini_Generated_Image_avkkoeavkkoeavkk.jpg?fit=1200%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/Gemini_Generated_Image_avkkoeavkkoeavkk.jpg?fit=1200%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/Gemini_Generated_Image_avkkoeavkkoeavkk.jpg?fit=1200%2C1200&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/Gemini_Generated_Image_avkkoeavkkoeavkk.jpg?fit=1200%2C1200&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/06\/Gemini_Generated_Image_avkkoeavkkoeavkk.jpg?fit=1200%2C1200&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/comments?post=3912"}],"version-history":[{"count":1,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3912\/revisions"}],"predecessor-version":[{"id":3914,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3912\/revisions\/3914"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media\/3913"}],"wp:attachment":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media?parent=3912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/categories?post=3912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/tags?post=3912"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/series?post=3912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}