# Spring Framework

Published articles for Spring Framework.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Java News Roundup: New OpenJDK JEPs, CDI 5.0, Spring, Open Liberty, RefactorFirst, ADK for Kotlin

DevFeed: [Java News Roundup: New OpenJDK JEPs, CDI 5.0, Spring, Open Liberty, RefactorFirst, ADK for Kotlin](<https://devfeed.tech/articles/java-news-roundup-new-openjdk-jeps-cdi-5-0-spring-open-liberty-refactorfirst-adk-for-kotlin-21544.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/java-news-roundup-sep07-2026/>)

Author: Michael Redlich

Published: 2026-09-14T20:15:00Z

Content type: news

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [JDK 27](<https://devfeed.tech/topics/jdk-27.md>), [releases](<https://devfeed.tech/topics/releases.md>), [Jakarta EE](<https://devfeed.tech/topics/jakarta-ee.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Groovy](<https://devfeed.tech/topics/groovy.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [architecture-design](<https://devfeed.tech/tags/architecture-design.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [development](<https://devfeed.tech/tags/development.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [groovy](<https://devfeed.tech/tags/groovy.md>), [jakarta-ee](<https://devfeed.tech/tags/jakarta-ee.md>), [java](<https://devfeed.tech/tags/java.md>), [java-news-roundup-sep07-2026](<https://devfeed.tech/tags/java-news-roundup-sep07-2026.md>), [jdk-27](<https://devfeed.tech/tags/jdk-27.md>), [jdk-28](<https://devfeed.tech/tags/jdk-28.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [micronaut](<https://devfeed.tech/tags/micronaut.md>), [news](<https://devfeed.tech/tags/news.md>), [open-jdk](<https://devfeed.tech/tags/open-jdk.md>), [open-liberty](<https://devfeed.tech/tags/open-liberty.md>), [refactorfirst](<https://devfeed.tech/tags/refactorfirst.md>), [releases](<https://devfeed.tech/tags/releases.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>), [tornadovm](<https://devfeed.tech/tags/tornadovm.md>)

### AI overview

A Java news roundup for September 7, 2026, covers new OpenJDK proposals for ahead-of-time compilation and structured concurrency, Jakarta CDI 5.0 and ADK for Kotlin 1.0, Open Liberty, TornadoVM, RefactorFirst, Micronaut, Groovy 6.0, and Gradle 9.8. It also reports current JDK 27 and JDK 28 early-access builds and describes improvements in TornadoVM 6.1.0.

### Source excerpt

This week's Java roundup for September 7th, 2026, features news highlighting: new JEPs for ahead-of-time compilation and structured concurrency; GA releases of Jakarta CDI 5.0 and ADK for Kotlin 1.0; the September 2026 edition of Open Liberty; point releases of TornadoVM and RefactorFirst; a maintenance release of Micronaut; and first releases candidates of Groovy 6.0 and Gradle 9.8. By Michael Redlich

## The persistent threat: Why major vulnerabilities like Log4Shell and Spring4Shell remain significant

DevFeed: [The persistent threat: Why major vulnerabilities like Log4Shell and Spring4Shell remain significant](<https://devfeed.tech/articles/the-persistent-threat-why-major-vulnerabilities-like-log4shell-and-spring4shell-remain-significant-8006.md>)

Original publisher: [Read original article](<https://snyk.io/blog/log4shell-spring4shell-threat/>)

Author: Brian Vermeer

Published: 2024-08-29T05:00:00Z

Content type: article

Language: en

Sources: [Blog RSS Feed | Snyk](<https://devfeed.tech/sources/blog-rss-feed-snyk.md>)

Topics: [log4j](<https://devfeed.tech/topics/log4j.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [application-security](<https://devfeed.tech/tags/application-security.md>), [awareness](<https://devfeed.tech/tags/awareness.md>), [blog](<https://devfeed.tech/tags/blog.md>), [developer](<https://devfeed.tech/tags/developer.md>), [devrel](<https://devfeed.tech/tags/devrel.md>), [enablement](<https://devfeed.tech/tags/enablement.md>), [java](<https://devfeed.tech/tags/java.md>), [log4j](<https://devfeed.tech/tags/log4j.md>), [logging](<https://devfeed.tech/tags/logging.md>), [open-source-security](<https://devfeed.tech/tags/open-source-security.md>), [security](<https://devfeed.tech/tags/security.md>), [snyk-open-source](<https://devfeed.tech/tags/snyk-open-source.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

The article examines the continued use of vulnerable Log4j and Spring Framework versions in software projects. It explains how Log4Shell could enable malicious code execution and cites scan data indicating that 21% of companies with production code scanning still had projects vulnerable to Log4Shell.

### Source excerpt

Read on to learn about the danger of the continued use of vulnerable Log4j and Spring Framework versions in many projects.

## Spring Dependencies in Gradle Can Be Tricky

DevFeed: [Spring Dependencies in Gradle Can Be Tricky](<https://devfeed.tech/articles/spring-dependencies-in-gradle-can-be-tricky-17705.md>)

Original publisher: [Read original article](<https://nexocode.com/blog/posts/spring-dependencies-in-gradle/>)

Author: piotr-kubowicz

Published: 2020-01-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Backend Development on nexocode](<https://devfeed.tech/sources/backend-development-on-nexocode.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>)

Tags: [build-tool](<https://devfeed.tech/tags/build-tool.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [java](<https://devfeed.tech/tags/java.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [security](<https://devfeed.tech/tags/security.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>)

### AI overview

This article explains why managing Spring dependencies with Gradle can be difficult, especially when applications use multiple Spring projects and related libraries. It recommends importing a Spring-provided BOM instead of managing versions manually, describes the history and limitations of the Spring Dependency Management Plugin, and shows that an attempted Jackson Databind version override may leave the vulnerable version in use.

### Source excerpt

Spring is the most popular Java web framework for many years and Gradle has an established position as a build tool. You might expect it's easy to find instructions on how to set up those two together -- yet the Internet is filled with advice that will get you into trouble. The official Spring documentation does not make the situation any better in this case. Using Spring in your applications typically means your classpath contains not only Spring Framework itself, but also other Spring projects like Spring Security plus Spring dependencies that are independent libraries. It may require lots of work to get versions of dependencies right, avoiding incompatible versions being used together. So a much better solution is -- not to manage all those versions manually and choose a set suggested by Spring. Technically speaking: importing a BOM (bill of materials).

## Error handling with @Transactional

DevFeed: [Error handling with @Transactional](<https://devfeed.tech/articles/error-handling-with-transactional-27318.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201911/transactional-errors/>)

Published: 2019-11-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Error Handling](<https://devfeed.tech/topics/error-handling.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [exception](<https://devfeed.tech/tags/exception.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This article explains Spring transaction rollback behavior for runtime and checked exceptions, including how explicit rollback configuration affects checked exceptions. It also discusses how Lombok's @SneakyThrows interacts with @Transactional.

### Source excerpt

You probably already know that by default in spring transactions are rolled back only for runtime exceptions. When a checked exception is thrown from your code and you don't explicitly tell spring that it should rollback the transaction then it get's committed. In this post, I'm going to create simple reference material on when transactions are rollback when using Spring and Lombok. Read more

## Spring internals - BeanDefinition

DevFeed: [Spring internals - BeanDefinition](<https://devfeed.tech/articles/spring-internals-beandefinition-27303.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201904/beandefinition/>)

Published: 2019-04-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [Code](<https://devfeed.tech/topics/code.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [customization](<https://devfeed.tech/tags/customization.md>), [examples](<https://devfeed.tech/tags/examples.md>), [extend](<https://devfeed.tech/tags/extend.md>), [framework](<https://devfeed.tech/tags/framework.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [internals](<https://devfeed.tech/tags/internals.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>)

### AI overview

A tutorial on Spring Framework BeanDefinition internals explains how bean definitions are discovered, registered, created, and customized. It covers dynamic registration and modification through BeanDefinitionRegistryPostProcessor and BeanDefinitionCustomizer.

### Source excerpt

How beans are registered in spring and what is the base of beans creation, how to extend spring's context to our needs? In this post, I'm going to dig into the foundation of many mechanics in spring framework - bean definition. Read more

## spring.factories

DevFeed: [spring.factories](<https://devfeed.tech/articles/spring-factories-27301.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201903/spring-factories/>)

Published: 2019-03-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [modules](<https://devfeed.tech/topics/modules.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [module](<https://devfeed.tech/tags/module.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>)

### AI overview

This developer article explains how Spring Boot uses the spring.factories file and Spring Framework mechanisms to discover module-provided configuration and customize the application context during initialization. It also describes how classpath scanning and conditional configuration support Spring Boot's modular design.

### Source excerpt

Have you ever wondered how it's possible that spring-boot is able to pick up whatever you have on the classpath and configure application context to your needs based on some conventions and bit of black magic? In this post, I'm going to dig into spring.factories file on which most of the spring-boot power is based. Read more

## Spring internals - BeanPostProcessor

DevFeed: [Spring internals - BeanPostProcessor](<https://devfeed.tech/articles/spring-internals-beanpostprocessor-27299.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201902/beanpostprocessor/>)

Published: 2019-02-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [Code](<https://devfeed.tech/topics/code.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [IoC (Disambiguation)](<https://devfeed.tech/topics/ioc.md>)

Tags: [boot-process](<https://devfeed.tech/tags/boot-process.md>), [code](<https://devfeed.tech/tags/code.md>), [container](<https://devfeed.tech/tags/container.md>), [context](<https://devfeed.tech/tags/context.md>), [customization](<https://devfeed.tech/tags/customization.md>), [execution](<https://devfeed.tech/tags/execution.md>), [framework](<https://devfeed.tech/tags/framework.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [interface](<https://devfeed.tech/tags/interface.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>)

### AI overview

This article explains Spring's BeanPostProcessor interface and its role during Spring container initialization. It describes how post-processors customize bean instances before and after initialization, can interrupt further processing, and can support examples such as measuring selected method execution times.

### Source excerpt

Have you ever wondered how spring does things? How field annotated with @Autowired is populated? How asynchronous or scheduled methods are discovered. In this post, I'm going to take a deeper look and scratch a bit on the surface of spring internals. I'll focus on BeanPostProcessor interface which can be used to achieve interesting things and is used in many various functionalities across spring framework itself. Read more

## Incidental Inversion of Control

DevFeed: [Incidental Inversion of Control](<https://devfeed.tech/articles/incidental-inversion-of-control-33348.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2010/05/28/incidental-inversion-of-control>)

Published: 2010-05-28T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [IoC (Disambiguation)](<https://devfeed.tech/topics/ioc.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [ASP.NET](<https://devfeed.tech/topics/aspnet.md>), [Java](<https://devfeed.tech/topics/java.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [XML](<https://devfeed.tech/topics/xml.md>)

Tags: [asp-net](<https://devfeed.tech/tags/asp-net.md>), [java](<https://devfeed.tech/tags/java.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [programming](<https://devfeed.tech/tags/programming.md>), [spring-framework](<https://devfeed.tech/tags/spring-framework.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The article explains Inversion of Control (IoC) as a framework design approach in which frameworks handle common work and invoke application code when appropriate. It discusses examples in Java web applications and ASP.NET, then describes an eQube scheduler that uses XML configuration, event hooks, and JavaScript to automate reports with different filter configurations.

### Source excerpt

This morning I started reading about the Spring Framework and, as usual, I followed a rabbit hole to learn what the phrase Inversion of Control (IoC) means. IoC is also known as the Hollywood Effect ("don't call us, we'll call you"). A lot of programming frameworks use an inversion of control to take care of the bulk of the work and leave your code to perform its task (and only its task).Most web frameworks are a good example of IoC. In Java web applications, the framework takes care of all HTTP complexities and turns control over to your servlet or JSP when the time is right. This leaves your JSP to process the request and return a response - easy! The ASP.NET framework has an excellent inversion of control with its postback model. The framework allows for applications to be built very similar to Windows applications - the underlying framework takes care of display issues and calls parts of the applications code when the time is right. A lot of these calls to code are handlers for events like Click, Load, and others.As I read about this "new" concept I began to realize that it wasn't new at all. ASP.NET and J2EE use it extensively. In fact, I have created such a framework without realizing what I created. In the middle of last year I created a pluggable scheduler interface for our eQube environment that allows the programmer to simply specify report names and filter values via XML, and when it comes time to do something special, the programmer can hook into events and have the framework execute some JavaScript code to do something special.I stumbled into creating this framework after doing several short projects that required some boilerplate code to interface with the eQube APIs. It all happened quite innocently, but having taken the incidental route to IoC framework I have gotten much more value than I thought I would. For instance, it is suddenly very easy to run a report with 400 different filter configurations. I just put together some XML to spec the report a