{"id":3744,"date":"2025-12-23T10:00:10","date_gmt":"2025-12-23T15:00:10","guid":{"rendered":"https:\/\/www.mymiller.name\/wordpress\/?p=3744"},"modified":"2025-12-23T10:00:10","modified_gmt":"2025-12-23T15:00:10","slug":"3744","status":"publish","type":"post","link":"https:\/\/www.mymiller.name\/wordpress\/spring_config\/3744\/","title":{"rendered":"Spring Cloud Config: Choosing the Right Backend Storage"},"content":{"rendered":"\n<div class=\"wp-block-jetpack-markdown\"><p>Spring Cloud Config offers a flexible way to manage your application\u2019s configuration. A crucial step is selecting the right backend to store your configuration data. Let\u2019s explore popular options, their pros and cons, configuration details, and the necessary dependencies for Maven and Gradle.<\/p>\n<h3>1. Git<\/h3>\n<p><strong>Pros:<\/strong><\/p>\n<ul>\n<li><strong>Version Control:<\/strong> Leverage Git\u2019s robust versioning capabilities to track changes, revert to previous configurations, and manage different environments (dev, test, prod) through branches or tags.<\/li>\n<li><strong>Familiar Workflow:<\/strong>  Developers are likely already comfortable with Git, making it easy to adopt.<\/li>\n<li><strong>Wide Tooling Support:<\/strong>  Benefit from a rich ecosystem of Git tools for managing and visualizing your configuration data.<\/li>\n<\/ul>\n<p><strong>Cons:<\/strong><\/p>\n<ul>\n<li><strong>Performance:<\/strong>  Fetching configurations from a remote Git repository can introduce latency, especially for large repositories or frequent updates.<\/li>\n<li><strong>Security:<\/strong>  Securely managing access to your Git repository is crucial, especially if it contains sensitive information.<\/li>\n<\/ul>\n<p><strong>Configuration:<\/strong><\/p>\n<p>By default, Spring Cloud Config uses Git. To configure it, specify the URI of your Git repository in your <code>application.properties<\/code> or <code>application.yml<\/code> file:<\/p>\n<pre><code class=\"language-yaml\">spring:\n  cloud:\n    config:\n      server:\n        git:\n          uri: https:\/\/github.com\/your-org\/your-config-repo.git\n<\/code><\/pre>\n<p><strong>Authentication:<\/strong><\/p>\n<p>If your Git repository is private, you\u2019ll need to provide authentication credentials. Here are a few common approaches:<\/p>\n<ul>\n<li><strong>Username and Password:<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">spring:\n  cloud:\n    config:\n      server:\n        git:\n          uri: https:\/\/github.com\/your-org\/your-config-repo.git\n          username: your-github-username\n          password: your-github-password \n<\/code><\/pre>\n<p><strong>Important Note:<\/strong> Using plain text passwords is generally discouraged. Consider using SSH keys or access tokens for better security.<\/p>\n<ul>\n<li>\n<p><strong>SSH Keys:<\/strong><\/p>\n<ul>\n<li>Generate an SSH key pair.<\/li>\n<li>Add the public key to your Git repository\u2019s deploy keys or access keys.<\/li>\n<li>Configure Spring Cloud Config to use the private key:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">spring:\n  cloud:\n    config:\n      server:\n        git:\n          uri: git@github.com:your-org\/your-config-repo.git\n          privateKey: |\n            -----BEGIN RSA PRIVATE KEY-----\n            ... your private key content ...\n            -----END RSA PRIVATE KEY-----\n<\/code><\/pre>\n<ul>\n<li>\n<p><strong>Access Tokens:<\/strong><\/p>\n<ul>\n<li>Generate a personal access token (PAT) in your Git provider settings with appropriate read permissions.<\/li>\n<li>Use the PAT as the password in your configuration:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">spring:\n  cloud:\n    config:\n      server:\n        git:\n          uri: https:\/\/github.com\/your-org\/your-config-repo.git\n          username: your-github-username\n          password: your-github-access-token\n<\/code><\/pre>\n<p><strong>Dependencies:<\/strong><\/p>\n<p>This is usually included by default in Spring Cloud Config Server starters, but if you need to add it explicitly:<\/p>\n<p><strong>Maven:<\/strong><\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-cloud-config-server&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<p><strong>Gradle:<\/strong><\/p>\n<pre><code class=\"language-gradle\">implementation 'org.springframework.cloud:spring-cloud-config-server'\n<\/code><\/pre>\n<h3>2. File System<\/h3>\n<p><strong>Pros:<\/strong><\/p>\n<ul>\n<li><strong>Simplicity:<\/strong>  Easy to set up and use, especially for local development or simple deployments.<\/li>\n<li><strong>Performance:<\/strong>  Reading configurations from the local file system is generally faster than fetching from a remote repository.<\/li>\n<\/ul>\n<p><strong>Cons:<\/strong><\/p>\n<ul>\n<li><strong>Scalability:<\/strong> Not ideal for large-scale deployments or distributed systems.<\/li>\n<li><strong>Version Control:<\/strong>  Lacks the built-in versioning capabilities of Git. You\u2019ll need to implement your own versioning strategy.<\/li>\n<\/ul>\n<p><strong>Configuration:<\/strong><\/p>\n<p>To use the file system backend, set the <code>spring.cloud.config.server.native.search-locations<\/code> property to the directory containing your configuration files:<\/p>\n<pre><code class=\"language-yaml\">spring:\n  cloud:\n    config:\n      server:\n        native:\n          search-locations: file:\/\/\/path\/to\/your\/config\/directory\n<\/code><\/pre>\n<p><strong>Dependencies:<\/strong><\/p>\n<p>No specific dependency is required for the file system backend, as it\u2019s included in the Spring Cloud Config Server.<\/p>\n<h3>3. Vault<\/h3>\n<p><strong>Pros:<\/strong><\/p>\n<ul>\n<li><strong>Enhanced Security:<\/strong> Vault provides robust security features like encryption, access control policies, and audit logging, making it ideal for sensitive configuration data.<\/li>\n<li><strong>Secrets Management:<\/strong>  Vault can manage not only application configuration but also secrets like API keys, database credentials, and certificates.<\/li>\n<\/ul>\n<p><strong>Cons:<\/strong><\/p>\n<ul>\n<li><strong>Complexity:<\/strong>  Setting up and managing Vault can be more complex than other options.<\/li>\n<li><strong>Dependency:<\/strong>  Introduces an external dependency on HashiCorp Vault.<\/li>\n<\/ul>\n<p><strong>Configuration:<\/strong><\/p>\n<p>To enable Vault support, add the <code>vault<\/code> profile to your configuration and provide the necessary Vault connection details:<\/p>\n<pre><code class=\"language-yaml\">spring:\n  profiles:\n    active: vault\n  cloud:\n    config:\n      server:\n        vault:\n          host: your-vault-host\n          port: 8200\n          scheme: https\n          authentication: TOKEN # or other supported authentication methods\n          token: your-vault-token\n<\/code><\/pre>\n<p><strong>Dependencies:<\/strong><\/p>\n<p><strong>Maven:<\/strong><\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-cloud-starter-config&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.vault&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-vault-core&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<p><strong>Gradle:<\/strong><\/p>\n<pre><code class=\"language-gradle\">implementation 'org.springframework.cloud:spring-cloud-starter-config'\nimplementation 'org.springframework.vault:spring-vault-core'\n<\/code><\/pre>\n<h3>4. Database (JDBC)<\/h3>\n<p><strong>Pros:<\/strong><\/p>\n<ul>\n<li><strong>Centralized Management:<\/strong>  Store configurations in a relational database, leveraging its features for data management and access control.<\/li>\n<li><strong>Integration:<\/strong>  Easily integrates with existing database infrastructure.<\/li>\n<\/ul>\n<p><strong>Cons:<\/strong><\/p>\n<ul>\n<li><strong>Performance:<\/strong>  Database queries can be slower than accessing files or Git repositories.<\/li>\n<li><strong>Schema Management:<\/strong>  Requires defining and managing a database schema for your configuration data.<\/li>\n<\/ul>\n<p><strong>Configuration:<\/strong><\/p>\n<p>Configure a datasource and set the <code>spring.cloud.config.server.jdbc.sql<\/code> property to the SQL query used to fetch configuration data:<\/p>\n<pre><code class=\"language-yaml\">spring:\n  cloud:\n    config:\n      server:\n        jdbc:\n          sql: SELECT key, value FROM properties WHERE application=? AND profile=? AND label=?\n<\/code><\/pre>\n<p><strong>Dependencies:<\/strong><\/p>\n<p><strong>Maven:<\/strong><\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-cloud-config-server&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-boot-starter-jdbc&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<p><strong>Gradle:<\/strong><\/p>\n<pre><code class=\"language-gradle\">implementation 'org.springframework.cloud:spring-cloud-config-server'\nimplementation 'org.springframework.boot:spring-boot-starter-jdbc'\n\/\/ Add your database driver dependency here (e.g., MySQL, PostgreSQL) \n<\/code><\/pre>\n<h3>5. AWS Parameter Store and Secrets Manager<\/h3>\n<p>AWS offers two primary services for managing configuration data and secrets:<\/p>\n<ul>\n<li>\n<p><strong>AWS Parameter Store:<\/strong> A hierarchical key-value store for configuration data, offering features like versioning, encryption, and integration with AWS IAM for access control.<\/p>\n<\/li>\n<li>\n<p><strong>AWS Secrets Manager:<\/strong>  Specifically designed for storing and rotating secrets like database credentials and API keys. It provides features like automatic rotation, fine-grained access control, and auditing.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Pros:<\/strong><\/p>\n<ul>\n<li><strong>Integration with AWS Ecosystem:<\/strong> Seamlessly integrates with other AWS services and leverages AWS\u2019s security and scalability.<\/li>\n<li><strong>Managed Service:<\/strong> Reduces operational overhead by offloading management tasks to AWS.<\/li>\n<li><strong>Cost-Effective:<\/strong>  Pay-as-you-go pricing model.<\/li>\n<\/ul>\n<p><strong>Cons:<\/strong><\/p>\n<ul>\n<li><strong>Vendor Lock-in:<\/strong> Ties your configuration management to AWS.<\/li>\n<\/ul>\n<p><strong>Dependencies:<\/strong><\/p>\n<p><strong>Maven:<\/strong><\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-cloud-starter-aws-parameter-store-config&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-cloud-starter-aws-secrets-manager-config&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<p><strong>Gradle:<\/strong><\/p>\n<pre><code class=\"language-gradle\">implementation 'org.springframework.cloud:spring-cloud-starter-aws-parameter-store-config'\n\/\/ or \nimplementation 'org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config'\n<\/code><\/pre>\n<h3>6. Azure App Configuration<\/h3>\n<p>Azure App Configuration is a fully managed service for centralizing application settings and feature flags.<\/p>\n<p><strong>Pros:<\/strong><\/p>\n<ul>\n<li><strong>Feature Management:<\/strong>  Provides robust feature flag management capabilities, allowing you to enable or disable features in real-time.<\/li>\n<li><strong>High Availability and Scalability:<\/strong>  Designed for high availability and can scale to handle large volumes of requests.<\/li>\n<li><strong>Integration with Azure Ecosystem:<\/strong>  Integrates with other Azure services like Azure Key Vault for secrets management.<\/li>\n<\/ul>\n<p><strong>Cons:<\/strong><\/p>\n<ul>\n<li><strong>Vendor Lock-in:<\/strong>  Ties your configuration management to Azure.<\/li>\n<\/ul>\n<p><strong>Dependencies:<\/strong><\/p>\n<p><strong>Maven:<\/strong><\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;com.azure.spring&lt;\/groupId&gt;\n    &lt;artifactId&gt;azure-spring-cloud-appconfiguration-config&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<p><strong>Gradle:<\/strong><\/p>\n<pre><code class=\"language-gradle\">implementation 'com.azure.spring:azure-spring-cloud-appconfiguration-config'\n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":3493,"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":[433],"tags":[69,319],"series":[],"class_list":["post-3744","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring_config","tag-java-2","tag-spring"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/04\/woman-8696271_640.jpg?fit=438%2C640&ssl=1","jetpack-related-posts":[{"id":3750,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_config\/mastering-multi-profile-environments-with-spring-cloud-config\/","url_meta":{"origin":3744,"position":0},"title":"Mastering Multi-Profile Environments with Spring Cloud Config","author":"Jeffery Miller","date":"December 19, 2025","format":false,"excerpt":"Spring Cloud Config simplifies configuration management for microservices, but its power truly shines when dealing with diverse environments. This post dives into how to leverage multiple profiles with Spring Cloud Config, giving you fine-grained control over your application\u2019s behavior. Why Use Multiple Profiles? Imagine your application needs different settings for\u2026","rel":"","context":"In &quot;Spring Config&quot;","block_context":{"text":"Spring Config","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_config\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/man-69283_1280-jpg.avif 3x"},"classes":[]},{"id":3747,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_config\/secure-your-secrets-encrypting-values-with-spring-cloud-config\/","url_meta":{"origin":3744,"position":1},"title":"Secure Your Secrets: Encrypting Values with Spring Cloud Config","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"In the world of microservices, Spring Cloud Config provides a centralized way to manage externalized configurations for your applications. But what about sensitive data like database passwords or API keys? That\u2019s where encryption comes in. This blog post will guide you through the process of encrypting your sensitive values using\u2026","rel":"","context":"In &quot;Spring Config&quot;","block_context":{"text":"Spring Config","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_config\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/10\/security-5726869_1280-jpg.avif 3x"},"classes":[]},{"id":3689,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_config\/spring-cloud-config-encryption-securing-your-sensitive-data\/","url_meta":{"origin":3744,"position":2},"title":"Spring Cloud Config Encryption: Securing Your Sensitive Data","author":"Jeffery Miller","date":"November 18, 2025","format":false,"excerpt":"In the realm of modern application development, the security of sensitive data, such as database credentials, API keys, and third-party service configurations, is paramount. Spring Cloud Config, a powerful component of the Spring Cloud ecosystem, offers a streamlined approach to centralize and manage your application\u2019s configuration properties. However, storing sensitive\u2026","rel":"","context":"In &quot;Spring Config&quot;","block_context":{"text":"Spring Config","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_config\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/09\/castle-3856_1280-jpg.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/09\/castle-3856_1280-jpg.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/09\/castle-3856_1280-jpg.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/09\/castle-3856_1280-jpg.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2024\/09\/castle-3856_1280-jpg.avif 3x"},"classes":[]},{"id":3447,"url":"https:\/\/www.mymiller.name\/wordpress\/spring_discovery\/discovery-first-bootstrap\/","url_meta":{"origin":3744,"position":3},"title":"Discovery First Bootstrap","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"In the realm of microservices architecture, effective configuration management is crucial for ensuring the seamless operation and dynamic adaptability of distributed applications. Spring Cloud Config Server and Spring Cloud Discovery Server have emerged as powerful tools for addressing this challenge. While the default \"Config First\" mode offers a straightforward approach,\u2026","rel":"","context":"In &quot;Spring Discovery&quot;","block_context":{"text":"Spring Discovery","link":"https:\/\/www.mymiller.name\/wordpress\/category\/spring_discovery\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/11\/network-3152677_640.jpg?fit=640%2C427&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/11\/network-3152677_640.jpg?fit=640%2C427&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/11\/network-3152677_640.jpg?fit=640%2C427&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3438,"url":"https:\/\/www.mymiller.name\/wordpress\/spring\/architecting-with-spring-and-spring-cloud\/","url_meta":{"origin":3744,"position":4},"title":"Architecting with Spring and Spring Cloud","author":"Jeffery Miller","date":"December 24, 2025","format":false,"excerpt":"Building a Multi-Service Architecture with Spring 3.1.x and Spring Cloud: Unlocking the Power of Microservices In the ever-evolving landscape of software development, microservices have emerged as a powerful architectural paradigm, enabling organizations to build scalable, resilient, and agile applications. Spring, a widely adopted Java framework, provides a comprehensive suite of\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\/2023\/11\/field-5236879_640.jpg?fit=640%2C360&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/11\/field-5236879_640.jpg?fit=640%2C360&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2023\/11\/field-5236879_640.jpg?fit=640%2C360&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3903,"url":"https:\/\/www.mymiller.name\/wordpress\/docker\/the-s3-local-dev-trick-using-minio-to-simplify-cloud-native-developmen\/","url_meta":{"origin":3744,"position":5},"title":"The S3 Local Dev Trick: Using MinIO to Simplify Cloud-Native Developmen","author":"Jeffery Miller","date":"August 25, 2025","format":false,"excerpt":"As a software architect building cloud-native solutions, you know that working with cloud services like AWS S3 can be a bit tricky in a local development environment. You don't want to constantly connect to a remote bucket, and setting up complex local testing environments can be a pain. But what\u2026","rel":"","context":"In &quot;Docker&quot;","block_context":{"text":"Docker","link":"https:\/\/www.mymiller.name\/wordpress\/category\/docker\/"},"img":{"alt_text":"","src":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-9268117_1280.avif","width":350,"height":200,"srcset":"https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-9268117_1280.avif 1x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-9268117_1280.avif 1.5x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-9268117_1280.avif 2x, https:\/\/www.mymiller.name\/wordpress\/wp-content\/uploads\/2025\/08\/ai-generated-9268117_1280.avif 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3744","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=3744"}],"version-history":[{"count":2,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3744\/revisions"}],"predecessor-version":[{"id":3746,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/posts\/3744\/revisions\/3746"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media\/3493"}],"wp:attachment":[{"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/media?parent=3744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/categories?post=3744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/tags?post=3744"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.mymiller.name\/wordpress\/wp-json\/wp\/v2\/series?post=3744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}