Table of Contents A story about legacyEvaluating SpEL expressionsImplementing the audit adviceTesting the audit aspectImprovementsFootnotes In this article, we’ll implement a declarative API to perform tasks belonging to cross-cutting concerns, using auditing as an example. We’ll see how SpEL and …
-
Foojay Podcast #66: Let’s Talk About Java Code! Diving into a few Foojay blog posts…
Table of Contents VideoPodcast (audio only)GuestsLinksContent In this Foojay podcast, we dive into a few articles that were published recently and focus on code. Video Podcast (audio only) Guests Links Content 00:00 Introduction of the topics and guests 00:55 Wim …
-
Spring Data Neo4j: How to update an entity
Table of Contents Spring save() methodPatch YearCustom CypherProjectionsProjection as MovieMovie entity as projectionWrapping Up!Resources After working on a new online Spring Data Neo4j course, I learned a couple more things about updating an entity. The course required a different set …
-
The Proper Way to Define Configuration Properties in Spring
Upgrading from Spring Boot 2 to 3 forced me to define my configuration properties in a better way.
-
AI-powered Chat Application using IBM watsonx.ai and Spring AI
Table of Contents PricingIBM watsonx.aiCreating IBM watsonx.ai Chat-based ApplicationPrerequisitesConfigurationsChatbotChat ApplicationBasic ChatStreaming Chat Generative Artificial Intelligence (Gen AI) disrupted enterprises with the introduction of GPT-4 foundation model by Open AI in the late 2022 to early 2023 triggering big tech to …
-
Speed up your Spring Batch with Native Image and GraalVM
Learn how to speed up your Spring Batch jobs using GraalVM Native Image! 🚀 Discover how to compile batch apps into native executables for faster startup times (0.2s vs 4s), lower memory usage, and better performance. Perfect for CSV-to-PostgreSQL processing! Speed up your Spring Batch with Native Image and GraalVM
-
Prevent LDAP injection in Java with SpringBoot
In this article, we dive into the basics of LDAP (Lightweight Directory Access Protocol)—a powerful protocol used to manage directory information like user authentication, authorization, and centralized account management in IT systems. 🌐👨💻
We also explore LDAP Injection, a common security vulnerability 🛡️ where attackers manipulate LDAP queries to:
⚠️ Bypass authentication
⚠️ Access unauthorized data
⚠️ Modify directory entriesLearn how these attacks work, the risks they pose, and, most importantly, how to protect your systems with secure coding practices like input sanitization and parameterized queries. ✅💻
Whether you’re an IT professional, developer, or just curious about cybersecurity, this article is your crash course on LDAP and LDAP Injection! 🚀✨
-
Task Schedulers in Java: Modern Alternatives to Quartz Scheduler
Table of Contents Quartz is often considered the standard job scheduling library in Java, which can lead developers to overlook more modern alternatives.Limitations of QuartzQuartz is showing its agePerforms worse than modern alternativesLack of built-in monitoringDistributed scheduling is opt-inSporadic maintenanceAlternatives …
-
Langchain4J Musings
Table of Contents Choosing a LLMQuick introduction to LangChain4J and OllamaGetting our feet wetThe LangChain4j appThe Ollama infrastructureEnhancing with streamingRemembering historyAdding Retrieval-Augmented GenerationConclusion I’m coming relatively late to the LLM party, but I rarely come very early in the hype …
-
Spring Boot: Java Template Engine (JTE)
Table of Contents Hello to all Java and Spring enthusiasts. I am the Java Template Engine, a fresh newcomer to the Spring Initializer Ecosystem. Hello to all Java and Spring enthusiasts. I am the Java Template Engine, a fresh newcomer …
-
Augmenting the client with Alpine.js
Table of Contents Laying out the workServer-sideClient-sideThe Alpine codeOur first steps into AlpineBasic interactionsClient-side modelUpdating the modelConclusion This article is part of a series comparing different ways to implement asynchronous requests on the client, which is colloquially known as AJAX. …