Skip to main content

You are currently viewing the Trifork Blog, to view our full website please go to

Handling nested exceptions with a catch-all fallback in Spring-MVC

As our last blog for the year, here’s a quick tip to improve the exception handling in your Spring-MVC applications! Cross-controller error handling using ControllerAdvice In a Spring-MVC web application it’s common to use a class annotated with @(Rest)ControllerAdvice to handle uncaught exceptions via @ExceptionHandler methods. This way it’s easy to produce different HTTP responses […]

Getting out of a codependent relationship, or: how I moved to a healthy component-based Spring Security configuration

Holding Hands Together

In a recent blog post, the Spring Security team announced that they’ll be deprecating the configuration setup where you subclass the WebSecurityConfigurerAdapter. Instead, you simply define beans that allow you to set up the SecurityFilterChain by calling methods on the HttpSecurity object, and configure the WebSecurity object using a configurer. These options have been available […]

Distributed Tracing in an Axon Application

The Giftcard-demo demonstrates Axon Commands, Events and Queries either together or in a distributed fashion. Now with the tracing extension, these messages and context information can be visualised to get insight into the application behaviour. Requirements to run the demo You will need git, docker and maven. We will checkout out the code, build the […]

Dockerising your legacy integration tests

As most of you will know, every now and then you can expect the question ‘Can you help fix something on this ancient project?’ According to the Universal Software Ageing table, that means anything from last month to much, much older. I got such a question recently, being in-between projects, and this project fell squarely into […]

Spring Data Native Queries and Projections in Kotlin

Spring Data Native Queries and Projections in Kotlin

This blog describes the solution to mapping native queries to objects. This is useful because sometimes you want to use a feature of the underlying database implementation (such as PostgreSQL) that is not part of the JPQL standard. By the end of this blog you should be able to confidently use native queries and use […]

Refactoring from Elasticsearch version 1 with Java Transport client to version 6 with High Level REST client

Refactoring from Elasticsearch version 1 with Java Transport client to version 6 with High Level REST client

Every long running project accrues technical debt. It may be that the requirements today have evolved in a different direction from what was foreseen when the project was designed, or it may be that difficult infrastructure tasks have been put off in favor of new functionality. From time to time, you need to refactor your […]