# Spring Framework

Spring Framework is a comprehensive programming and configuration framework for modern Java-based enterprise applications, providing features such as dependency injection, web frameworks, data access, and testing support.

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

## Meet Jos Roseboom

DevFeed: [Meet Jos Roseboom](<https://devfeed.tech/articles/meet-jos-roseboom-21985.md>)

Original publisher: [Read original article](<https://vladmihalcea.com/meet-jos-roseboom/>)

Author: vladmihalcea

Published: 2026-09-11T04:23:25Z

Content type: article

Language: en

Sources: [Vlad Mihalcea](<https://devfeed.tech/sources/vlad-mihalcea.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [Jakarta EE](<https://devfeed.tech/topics/jakarta-ee.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [community](<https://devfeed.tech/tags/community.md>), [conference](<https://devfeed.tech/tags/conference.md>), [framework](<https://devfeed.tech/tags/framework.md>), [hibernate](<https://devfeed.tech/tags/hibernate.md>), [interview](<https://devfeed.tech/tags/interview.md>), [jakarta-ee](<https://devfeed.tech/tags/jakarta-ee.md>), [java](<https://devfeed.tech/tags/java.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [performance](<https://devfeed.tech/tags/performance.md>), [performance-tuning](<https://devfeed.tech/tags/performance-tuning.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>)

### AI overview

An interview with Jos Roseboom about JPA and Hibernate performance tuning, based on his JavaZone talk. He describes production incidents involving exhausted database connections and excessive queries caused by fetching entities and following associations.

### Source excerpt

JavaZone 2026 At the beginning of September, I participated in JavaZone for the third time and had the privilege of meeting a lot of passionate software developers willing to share their knowledge with the community. In the first conference day, I attended a very good talk about JPA performance tuning that was delivered by Jos Roseboom and since I enjoyed his talk, I proposed him to gave an interview for this blog. Therefore, in this article we have the pleasure of getting to know Jos and take opportunity of learning about Spring... Read More The post Meet Jos Roseboom appeared first on Vlad Mihalcea.

## The best way to clean up test data with Spring and Hibernate

DevFeed: [The best way to clean up test data with Spring and Hibernate](<https://devfeed.tech/articles/the-best-way-to-clean-up-test-data-with-spring-and-hibernate-21982.md>)

Original publisher: [Read original article](<https://vladmihalcea.com/clean-up-test-data-spring/>)

Author: vladmihalcea

Published: 2025-11-11T08:05:24Z

Content type: tutorial

Language: en

Sources: [Vlad Mihalcea](<https://devfeed.tech/sources/vlad-mihalcea.md>)

Topics: [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [Integration testing](<https://devfeed.tech/topics/integration-testing.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Java](<https://devfeed.tech/topics/java.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>)

Tags: [cleanup](<https://devfeed.tech/tags/cleanup.md>), [hibernate](<https://devfeed.tech/tags/hibernate.md>), [integration-testing](<https://devfeed.tech/tags/integration-testing.md>), [java](<https://devfeed.tech/tags/java.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [schema](<https://devfeed.tech/tags/schema.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [test-data](<https://devfeed.tech/tags/test-data.md>), [testing](<https://devfeed.tech/tags/testing.md>), [truncatemappedobjects](<https://devfeed.tech/tags/truncatemappedobjects.md>)

### AI overview

This tutorial examines how to clean up test data in Spring and Hibernate integration tests. It argues that relying on @DataJpaTest for automatic transaction rollback is not always appropriate and discusses limitations of its SQL logging, including its inability to show bind parameter values or indicate whether batching is used.

### Source excerpt

Introduction In this article, I'm going to show you the best way to clean up test data when using Spring and Hibernate. While it's very common to use the @DataJpaTest annotation when implementing integration tests, in this blog post, you will see why you are better off avoiding using this annotation. Why I don't use @DataJpaTest As explained by the manual, Spring Boot provides the @DataJpaTest annotation for Spring Data JPA integration testing. Once the @DataJpaTest annotation is added to an integration test, Spring Boot will make the following changes to the... Read More The post The best way to clean up test data with Spring and Hibernate appeared first on Vlad Mihalcea.

## Twelve years of blogging

DevFeed: [Twelve years of blogging](<https://devfeed.tech/articles/twelve-years-of-blogging-21989.md>)

Original publisher: [Read original article](<https://vladmihalcea.com/twelve-years-of-blogging/>)

Author: vladmihalcea

Published: 2025-09-30T11:35:44Z

Content type: opinion

Language: en

Sources: [Vlad Mihalcea](<https://devfeed.tech/sources/vlad-mihalcea.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Java](<https://devfeed.tech/topics/java.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [Jakarta EE](<https://devfeed.tech/topics/jakarta-ee.md>), [WordPress](<https://devfeed.tech/topics/wordpress.md>)

Tags: [anniversary](<https://devfeed.tech/tags/anniversary.md>), [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [blogging](<https://devfeed.tech/tags/blogging.md>), [jakarta-ee](<https://devfeed.tech/tags/jakarta-ee.md>), [java](<https://devfeed.tech/tags/java.md>), [software-developer](<https://devfeed.tech/tags/software-developer.md>), [spring](<https://devfeed.tech/tags/spring.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

A personal reflection marking twelve years of blogging. The author describes starting the blog while working as a software architect, developing writing experience over time, and finding inspiration in wide-ranging reading. The article also promotes Hypersistence Optimizer for detecting performance issues in JPA and Hibernate data access layers across several Java frameworks.

### Source excerpt

Twelve years later! Twelve years ago today, I decided to create this blog on WordPress.com to share whatever I was finding interesting while working as a software architect. Prior to starting this blog, I didn't have any writing experience, which you can clearly see in the first article I've ever published. However, practice makes perfect, and in time, I managed to learn how to express myself in writing, whether it was an article, a social media post, an answer on StackOverflow, or a book. Follow Your Bliss I've always loved to read.... Read More The post Twelve years of blogging appeared first on Vlad Mihalcea.

## 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

## ProxyFactory and ProxyFactoryBean in Spring

DevFeed: [ProxyFactory and ProxyFactoryBean in Spring](<https://devfeed.tech/articles/proxyfactory-and-proxyfactorybean-in-spring-27308.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201906/proxy-factory/>)

Published: 2019-06-13T00: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>), [Java](<https://devfeed.tech/topics/java.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [framework](<https://devfeed.tech/tags/framework.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [java](<https://devfeed.tech/tags/java.md>), [proxy](<https://devfeed.tech/tags/proxy.md>), [spring](<https://devfeed.tech/tags/spring.md>)

### AI overview

This tutorial explains how Spring's ProxyFactory and ProxyFactoryBean create object proxies. It compares native Java proxies with CGLIB-based proxies and shows how Spring abstractions can create proxies for interfaces and concrete classes.

### Source excerpt

Spring provides many easy to use abstractions and you use many of them without even knowing about them. You probably know that in order to have @Transactional or @Cacheable annotation work spring creates proxies for you (sometimes proxies on top of proxies...), but have you ever wondered how it's happening under the hood? What Creation of object proxies is a cumbersome task. One has to decide if the proxy should be created using native java mechanisms (JdkProxy available only on interfaces) or using cglib and it's complicated interfaces. 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

## Testing MVC in Spring

DevFeed: [Testing MVC in Spring](<https://devfeed.tech/articles/testing-mvc-in-spring-27292.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/201801/testing-mvc-in-spring/>)

Published: 2018-01-30T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Spring MVC](<https://devfeed.tech/topics/spring-mvc.md>), [Spring Framework](<https://devfeed.tech/topics/spring-framework.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [controllers](<https://devfeed.tech/tags/controllers.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [spring](<https://devfeed.tech/tags/spring.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A practical guide to testing Spring MVC applications, covering controller tests, separate MVC test groups, minimal test contexts, @WebMvcTest, and strict JSON verification. It also explains how API tests help preserve REST contracts and keep API documentation aligned with the build.

### Source excerpt

Most of java web applications is built on top of the Spring Framework. Spring has pretty good support for testing and it is a mistake not to take advantage of features it offers. I've been developing various applications using Spring MVC for some time and I've noticed few patterns for testing that do work. Read more

## Events in spring

DevFeed: [Events in spring](<https://devfeed.tech/articles/events-in-spring-27279.md>)

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

Published: 2017-08-01T00: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>), [async](<https://devfeed.tech/topics/async.md>), [generics](<https://devfeed.tech/topics/generics.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [framework](<https://devfeed.tech/tags/framework.md>), [generics](<https://devfeed.tech/tags/generics.md>), [spring](<https://devfeed.tech/tags/spring.md>), [transaction-management](<https://devfeed.tech/tags/transaction-management.md>)

### AI overview

A tutorial on Spring Framework event handling, covering event publication, listener methods, generic event resolution, SpEL filtering, transaction-bound listeners, and asynchronous execution.

### Source excerpt

With spring 4.2 (released more than one year ago) serious improvements regarding embedded events were made. You probably already know it, but I've never had a chance to properly investigate it. Lately, when digging into code base of the system I'm currently working on I got an opportunity to see it in action and after quick glimpse, I decided to investigate it a bit further. 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