<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wim De Troyer on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/wim-de-troyer/</link><description>Articles written by Wim De Troyer on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 26 Nov 2025 10:38:43 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/wim-de-troyer/index.xml" rel="self" type="application/rss+xml"/><item><title>The Visitor Pattern - 'Revisited' using Data Oriented Programming techniques</title><link>https://foojayio.github.io/website/today/the-visitor-pattern-revisited-using-data-oriented-programming-techniques/</link><pubDate>Wed, 26 Nov 2025 10:38:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-visitor-pattern-revisited-using-data-oriented-programming-techniques/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Design patterns are great, they standardize solutions for common programming problems so you don&amp;rsquo;t shoot yourself in the foot or reinvent the wheel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;However, some might argue that some design patterns only exist in a programming language because that language lacks a way to elegantly and efficiently express it in its syntax.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For example, the &lt;a href="https://en.wikipedia.org/wiki/Strategy_pattern" target="_blank" rel="noopener noreferrer"&gt;Strategy pattern&lt;/a&gt;
 is a design pattern that enables selecting algorithms at runtime. Taking the example of different &lt;em&gt;strategies&lt;/em&gt; of tax calculation, let&amp;rsquo;s see what an implementation looked like &lt;em&gt;before&lt;/em&gt; java 8:&lt;/p&gt;</description></item><item><title>Foojay Podcast #66: Let's Talk About Java Code!</title><link>https://foojayio.github.io/website/today/foojay-podcast-66/</link><pubDate>Tue, 11 Feb 2025 08:24:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-66/</guid><description>&lt;p&gt;In this Foojay podcast, we dive into a few articles that were published recently and focus on code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Igor Kulakov of JetBrains gives us his insights into the tool he created to find duplicate content in documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- --&gt;
&lt;ul&gt;
&lt;li&gt;Rijo Sam explains how you can generate real random values and how he created a train departure display.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- --&gt;
&lt;ul&gt;
&lt;li&gt;Maxillian Arruda explains in a very detailed post the different ways to construct a complex Java object.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- --&gt;
&lt;ul&gt;
&lt;li&gt;And we start with Wim De Troye about the code changes he had to do in a project that got upgraded from Spring Boot 2 to 3.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/IB7drozkKUk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>The proper way to define configuration properties in Spring</title><link>https://foojayio.github.io/website/today/the-proper-way-to-define-configuration-properties-in-spring/</link><pubDate>Tue, 07 Jan 2025 16:55:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-proper-way-to-define-configuration-properties-in-spring/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;I recently did a (long overdue) &lt;strong&gt;migration from Spring Boot 2 to 3&lt;/strong&gt; on one of our larger applications.&lt;/p&gt;
&lt;p&gt;Something that surprised me was that classes marked with &lt;code&gt;@ConfigurationProperties&lt;/code&gt; had properties that were properly bound when running in Spring Boot 2 but were &lt;strong&gt;no longer&lt;/strong&gt; bound after the upgrade.&lt;/p&gt;
&lt;p&gt;Luckily, the automated testing suite caught this issue at &lt;em&gt;run time&lt;/em&gt; , but it&amp;rsquo;s obvious that such a thing silently failing can be &lt;strong&gt;quite problematic&lt;/strong&gt;.&lt;/p&gt;</description></item></channel></rss>