{"id":21366,"date":"2025-08-25T03:07:11","date_gmt":"2025-08-25T03:07:11","guid":{"rendered":"https:\/\/www.europesays.com\/ie\/21366\/"},"modified":"2025-08-25T03:07:11","modified_gmt":"2025-08-25T03:07:11","slug":"spring-news-roundup-second-milestone-releases-of-boot-security-auth-server-session-integration","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/ie\/21366\/","title":{"rendered":"Spring News Roundup: Second Milestone Releases of Boot, Security, Auth Server, Session, Integration"},"content":{"rendered":"<p>There was a flurry of activity in the Spring ecosystem during the week of August 18th, 2025, highlighting second milestone releases of Spring Boot, Spring Security, Spring Authorization Server, Spring for GraphQL, Spring Session, Spring Integration, Spring REST Docs, Spring Batch and Spring for Apache Pulsar.<\/p>\n<p>Spring Boot<\/p>\n<p>The <a href=\"https:\/\/spring.io\/blog\/2025\/08\/21\/spring-boot-4-0-0-M2-available-now\" rel=\"nofollow noopener\" target=\"_blank\">second milestone release<\/a> of <a href=\"https:\/\/spring.io\/projects\/spring-boot\" rel=\"nofollow noopener\" target=\"_blank\">Spring Boot<\/a> 4.0.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: support for the new Spring Framework <strong><a href=\"https:\/\/docs.spring.io\/spring-framework\/docs\/7.0.0-M8\/javadoc-api\/org\/springframework\/web\/service\/registry\/HttpServiceClient.html\" rel=\"nofollow noopener\" target=\"_blank\">@HttpServiceClient<\/a><\/strong> annotation on interfaces discovered via the <strong><a href=\"https:\/\/docs.spring.io\/spring-boot\/4.0\/api\/java\/org\/springframework\/boot\/autoconfigure\/AutoConfigurationPackages.html\" rel=\"nofollow noopener\" target=\"_blank\">AutoConfigurationPackages<\/a><\/strong> class; and the addition of nullability annotations, provided by <a href=\"https:\/\/jspecify.dev\/\" rel=\"nofollow noopener\" target=\"_blank\">JSpecify<\/a>, to the codebase. More details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-boot\/releases\/tag\/v4.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring Security<\/p>\n<p>The <a href=\"https:\/\/spring.io\/blog\/2025\/08\/18\/spring-security-7-0-0-M2-available-now\" rel=\"nofollow noopener\" target=\"_blank\">second milestone release<\/a> of <a href=\"https:\/\/spring.io\/projects\/spring-security\" rel=\"nofollow noopener\" target=\"_blank\">Spring Security<\/a> 7.0.0 ships with bug fixes, dependency upgrades and new features such as: a new <strong><a href=\"https:\/\/docs.spring.io\/spring-security\/site\/docs\/7.0.0-M2\/api\/org\/springframework\/security\/core\/annotation\/ExpressionTemplateValueProvider.html\" rel=\"nofollow noopener\" target=\"_blank\">ExpressionTemplateValueProvider<\/a><\/strong> interface that provides custom values from enumeration types used in security meta-annotation expressions; and improved integration with Spring Boot using the <strong><a href=\"https:\/\/docs.spring.io\/spring-security\/site\/docs\/7.0.0-M2\/api\/org\/springframework\/security\/web\/servlet\/util\/matcher\/PathPatternRequestMatcher.Builder.html\" rel=\"nofollow noopener\" target=\"_blank\">PathPatternRequestMatcher.Builder<\/a><\/strong> class for publishing an instance of the <strong><a href=\"https:\/\/docs.spring.io\/spring-security\/site\/docs\/7.0.0-M2\/api\/org\/springframework\/security\/config\/web\/PathPatternRequestMatcherBuilderFactoryBean.html\" rel=\"nofollow noopener\" target=\"_blank\">PathPatternRequestMatcherBuilderFactoryBean<\/a><\/strong> class. Further details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-security\/releases\/tag\/7.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring Authorization Server<\/p>\n<p>The <a href=\"https:\/\/spring.io\/blog\/2025\/08\/19\/spring-authorization-server-2-0-0-M2-1-5-2-and-1-4-5-available-now\" rel=\"nofollow noopener\" target=\"_blank\">second milestone release<\/a> of <a href=\"https:\/\/spring.io\/projects\/spring-authorization-server\" rel=\"nofollow noopener\" target=\"_blank\">Spring Authorization Server<\/a> 2.0.0 provides bug fixes, dependency upgrades and one new feature that provides an access token to the <strong><a href=\"https:\/\/docs.spring.io\/spring-authorization-server\/docs\/2.0.0-M2\/api\/org\/springframework\/security\/oauth2\/server\/authorization\/authentication\/OAuth2RefreshTokenAuthenticationProvider.html\" rel=\"nofollow noopener\" target=\"_blank\">OAuth2RefreshTokenAuthenticationProvider<\/a><\/strong> class to refresh the token. More details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-authorization-server\/releases\/tag\/2.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring for GraphQL<\/p>\n<p>The second milestone release of <a href=\"https:\/\/spring.io\/projects\/spring-graphql\" rel=\"nofollow noopener\" target=\"_blank\">Spring for GraphQL<\/a> 2.0.0 delivers bug fixes, dependency upgrades and one new feature that now consistently raises a <strong><a href=\"https:\/\/github.com\/graphql-java\/graphql-java\/blob\/master\/src\/main\/java\/graphql\/GraphQLException.java\" rel=\"nofollow noopener\" target=\"_blank\">GraphQlException<\/a><\/strong> when calling the <strong>toEntity()<\/strong> method, defined in the <strong><a href=\"https:\/\/docs.spring.io\/spring-graphql\/docs\/2.0.x\/api\/org\/springframework\/graphql\/client\/ClientResponseField.html\" rel=\"nofollow noopener\" target=\"_blank\">ClientResponseField<\/a><\/strong> interface, on a field that cannot be deserialized into a given type. Further details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-graphql\/releases\/tag\/v2.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring Session<\/p>\n<p>The second milestone release of Spring Session 4.0.0 features an adjustment to copyright notices in the codebase from various year ranges to a consistent <strong>2014-present<\/strong>. More details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-session\/releases\/tag\/4.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring Integration<\/p>\n<p>The second milestone release of <a href=\"https:\/\/spring.io\/projects\/spring-integration\" rel=\"nofollow noopener\" target=\"_blank\">Spring Integration<\/a> 7.0.0 ships with bug fixes, dependency upgrades and new features such as: applying nullability with <a href=\"https:\/\/jspecify.dev\/\" rel=\"nofollow noopener\" target=\"_blank\">JSpecify<\/a> to numerous packages; and an enhanced <strong><a href=\"https:\/\/github.com\/spring-projects\/spring-integration\/blob\/main\/spring-integration-core\/src\/main\/java\/org\/springframework\/integration\/dispatcher\/PartitionedDispatcher.java\" rel=\"nofollow noopener\" target=\"_blank\">PartitionedDispatcher<\/a><\/strong> class that now uses a Java <strong>List<\/strong> for the partitions map instead of an index for a key. Further details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-integration\/releases\/tag\/v7.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring Modulith<\/p>\n<p>The <a href=\"https:\/\/spring.io\/blog\/2025\/08\/22\/spring-modulith-2-0-0-m2-1-4-3-and-1-3-9-released\" rel=\"nofollow noopener\" target=\"_blank\">second milestone release<\/a> of <a href=\"https:\/\/spring.io\/projects\/spring-modulith\" rel=\"nofollow noopener\" target=\"_blank\">Spring Modulith<\/a> 2.0.0 delivers bug fixes, dependency upgrades and new features such as: updates to the <strong><a href=\"https:\/\/docs.spring.io\/spring-modulith\/docs\/2.0.0-M2\/api\/org\/springframework\/modulith\/events\/mongodb\/MongoDbEventPublicationRepository.html\" rel=\"nofollow noopener\" target=\"_blank\">MongoDbEventPublicationRepository<\/a><\/strong> and <strong><a href=\"https:\/\/docs.spring.io\/spring-modulith\/docs\/2.0.0-M2\/api\/org\/springframework\/modulith\/events\/neo4j\/Neo4jEventPublicationRepository.html\" rel=\"nofollow noopener\" target=\"_blank\">Neo4jEventPublicationRepository<\/a><\/strong> classes to align with revamped <strong><a href=\"https:\/\/docs.spring.io\/spring-modulith\/docs\/2.0.0-M2\/api\/org\/springframework\/modulith\/events\/core\/EventPublicationRepository.html\" rel=\"nofollow noopener\" target=\"_blank\">EventPublicationRepository<\/a><\/strong> interface; and a restructured bootstrapping procedure in the <strong><a href=\"https:\/\/docs.spring.io\/spring-modulith\/docs\/2.0.0-M2\/api\/org\/springframework\/modulith\/actuator\/ApplicationModulesEndpoint.html\" rel=\"nofollow noopener\" target=\"_blank\">ApplicationModulesEndpoint<\/a><\/strong> class for improved startup. More details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-modulith\/releases\/tag\/2.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring REST Docs<\/p>\n<p>The second milestone release of <a href=\"https:\/\/spring.io\/projects\/spring-restdocs\" rel=\"nofollow noopener\" target=\"_blank\">Spring REST Docs<\/a> 4.0.0 provides bug fixes, dependency upgrades and two new features: the use <a href=\"https:\/\/github.com\/samskivert\/jmustache\/blob\/master\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">JMustache<\/a>, the Java implementation of the <a href=\"https:\/\/mustache.github.io\/\" rel=\"nofollow noopener\" target=\"_blank\">Mustache<\/a> template language, as a dependency instead of shading it as the issue of unwanted auto-misconfiguration no longer exists; and support for <a href=\"https:\/\/github.com\/FasterXML\/jackson\/blob\/master\/README.md\" rel=\"nofollow noopener\" target=\"_blank\">Jackson<\/a> 3 for JSON processing. More details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-restdocs\/releases\/tag\/v4.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring Batch<\/p>\n<p>The <a href=\"https:\/\/spring.io\/blog\/2025\/08\/20\/spring-batch-6\" rel=\"nofollow noopener\" target=\"_blank\">second milestone release<\/a> of <a href=\"https:\/\/spring.io\/projects\/spring-batch\" rel=\"nofollow noopener\" target=\"_blank\">Spring Batch<\/a> 6.0.0 delivers bug fixes, dependency upgrades and new features such as: the addition of a <strong>recover()<\/strong> method added to the <strong><a href=\"https:\/\/docs.spring.io\/spring-batch\/docs\/6.0.0-M2\/api\/org\/springframework\/batch\/core\/launch\/JobOperator.html\" rel=\"nofollow noopener\" target=\"_blank\">JobOperator<\/a><\/strong> interface and its implementing classes for improved recovery of failed job executions; and the ability to inject an instance of the <strong><a href=\"https:\/\/docs.spring.io\/spring-batch\/docs\/6.0.0-M2\/api\/org\/springframework\/batch\/core\/step\/StepInterruptionPolicy.html\" rel=\"nofollow noopener\" target=\"_blank\">StepInterruptionPolicy<\/a><\/strong> class through the <strong><a href=\"https:\/\/docs.spring.io\/spring-batch\/docs\/6.0.0-M2\/api\/org\/springframework\/batch\/core\/step\/builder\/AbstractTaskletStepBuilder.html\" rel=\"nofollow noopener\" target=\"_blank\">AbstractTaskletStepBuilder<\/a><\/strong> class for consistency with the same functionality offered by the <strong><a href=\"https:\/\/docs.spring.io\/spring-batch\/docs\/6.0.0-M2\/api\/org\/springframework\/batch\/core\/step\/tasklet\/TaskletStep.html\" rel=\"nofollow noopener\" target=\"_blank\">TaskletStep<\/a><\/strong> class. Further details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-batch\/releases\/tag\/v6.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring AMQP<\/p>\n<p>The fourth milestone release of <a href=\"https:\/\/spring.io\/projects\/spring-amqp\" rel=\"nofollow noopener\" target=\"_blank\">Spring AMQP<\/a> 4.0.0 ships with bug fixes, improvements in documentation, dependency upgrades and these two new features: a refinement of the Jackson-related classes to explicitly accept instances of the Jackson <strong><a href=\"https:\/\/github.com\/FasterXML\/jackson-databind\/blob\/2.x\/src\/main\/java\/com\/fasterxml\/jackson\/databind\/json\/JsonMapper.java\" rel=\"nofollow noopener\" target=\"_blank\">JsonMapper<\/a><\/strong> class, an extension of the <strong><a href=\"https:\/\/github.com\/FasterXML\/jackson-databind\/blob\/2.x\/src\/main\/java\/com\/fasterxml\/jackson\/databind\/ObjectMapper.java\" rel=\"nofollow noopener\" target=\"_blank\">ObjectMapper<\/a><\/strong> class, to process JSON files to avoid issues with other extensions such as <strong><a href=\"https:\/\/github.com\/FasterXML\/jackson-dataformat-xml\/blob\/2.x\/src\/main\/java\/com\/fasterxml\/jackson\/dataformat\/xml\/XmlMapper.java\" rel=\"nofollow noopener\" target=\"_blank\">XmlMapper<\/a><\/strong>; and a delay in shutting down an instance of the <strong><a href=\"https:\/\/docs.spring.io\/spring-amqp\/docs\/4.0.0-M4\/api\/org\/springframework\/amqp\/rabbit\/listener\/SimpleMessageListenerContainer.html\" rel=\"nofollow noopener\" target=\"_blank\">SimpleMessageListenerContainer<\/a><\/strong> class to wait for pending reply messages. More details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-amqp\/releases\/tag\/v4.0.0-M4\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring for Apache Kafka<\/p>\n<p>The fourth milestone release of <a href=\"https:\/\/spring.io\/projects\/spring-kafka\" rel=\"nofollow noopener\" target=\"_blank\">Spring for Apache Kafka<\/a> 4.0.0 provides bug fixes, improvements in documentation, dependency upgrades and new features such as: a refactor <strong>newTopics()<\/strong> method, defined in the <strong><a href=\"https:\/\/docs.spring.io\/spring-kafka\/docs\/4.0.0-M4\/api\/org\/springframework\/kafka\/core\/KafkaAdmin.html\" rel=\"nofollow noopener\" target=\"_blank\">KafkaAdmin<\/a><\/strong> class, that replaces O(n2) nested iteration with O(n) map-based lookups for filtering topics; and refinements in the <strong>includeNames()<\/strong> and <strong>excludeNames()<\/strong> methods, defined in the <strong><a href=\"https:\/\/docs.spring.io\/spring-kafka\/docs\/4.0.0-M4\/api\/org\/springframework\/kafka\/annotation\/RetryableTopic.html\" rel=\"nofollow noopener\" target=\"_blank\">@RetryableTopic<\/a><\/strong> annotation, that properly resolves property placeholders (<strong>${&#8230;}<\/strong>) or Spring Expression Language expressions (<strong>#{&#8230;}<\/strong>). Further details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-kafka\/releases\/tag\/v4.0.0-M4\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n<p>Spring for Apache Pulsar<\/p>\n<p>The <a href=\"https:\/\/spring.io\/blog\/2025\/08\/18\/spring-for-apache-pulsar-1-2-9-and-2-0-0-M2-are-now-available\" rel=\"nofollow noopener\" target=\"_blank\">second milestone release<\/a> of <a href=\"https:\/\/spring.io\/projects\/spring-pulsar\" rel=\"nofollow noopener\" target=\"_blank\">Spring for Apache Pulsar<\/a> 2.0.0 features dependency upgrades and notable changes such as: a removal of numerous APIs that were deprecated in version 1.2.0; and a removal of Gradle exclusions in the <strong><a href=\"https:\/\/central.sonatype.com\/artifact\/org.apache.pulsar\/pulsar-client-all\" rel=\"nofollow noopener\" target=\"_blank\">pulsar-client-all<\/a><\/strong> dependency. More details on this release may be found in the <a href=\"https:\/\/github.com\/spring-projects\/spring-pulsar\/releases\/tag\/v2.0.0-M2\" rel=\"nofollow noopener\" target=\"_blank\">release notes<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"There was a flurry of activity in the Spring ecosystem during the week of August 18th, 2025, highlighting&hellip;\n","protected":false},"author":2,"featured_media":21367,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74],"tags":[1705,7266,18,19,17,18297,18299,18298,18300,18296,18301,82],"class_list":{"0":"post-21366","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-technology","8":"tag-architecture-design","9":"tag-development","10":"tag-eire","11":"tag-ie","12":"tag-ireland","13":"tag-java","14":"tag-spring-batch","15":"tag-spring-framework","16":"tag-spring-integration","17":"tag-spring-news-roundup-aug18-2025","18":"tag-spring-security","19":"tag-technology"},"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/posts\/21366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/comments?post=21366"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/posts\/21366\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/media\/21367"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/media?parent=21366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/categories?post=21366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/ie\/wp-json\/wp\/v2\/tags?post=21366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}