<div class="paragraph">
<p>Since we announced <a href="https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0">Spring Framework official support for Kotlin</a> in January 2017, a lot of things happened. Kotlin was announced as an official Android development language at Google I/O 2017, we continued to improve the Kotlin support across Spring portfolio and Kotlin itself has continued to evolve with key new features like <a href="https://kotlinlang.org/docs/reference/coroutines-overview.html">coroutines</a>.</p>
</div>
<div class="paragraph">
<p>I would like to take the opportunity of the <a href="https://spring.io/blog/2019/04/10/spring-framework-5-2-0-m1-available-now">first milestone of Spring Framework 5.2</a> to give a status overview of where we are when it comes to Spring and Kotlin. And I will make my best to focus on concrete improvements since I believe Spring and Kotlin share the same pragmatic mindset.</p>
</div>
Bucket4j rate limiting in Java local and distributed based on token/leaky-bucket algorithm
In this post, we take a look at the top 15 Spring core annotations and examples, focusing on @bean, configurations, injections, dependencies, and more.
Threeish years ago I worked with JVMs inside Docker running in Kubernetes. I discussed some of the pain points in a conference talk you can watch here, but y...
This article takes a more in depth view to the @SpringBootApplication annotation and its implemenation and implications.
Speedment is a Stream ORM Java Toolkit and Runtime
SimpleFlatMapper V3.18.0 provides a very fast and easy to use mapper for
Jdbc, aka micro ORM from ResultSet to PreparedStatement
Csv Mapper with its own Csv Parser
Excel spreadsheet
Cassandra DatastaxJBake is a Java based, open source, static site/blog generator for developers & designers
vavr - turns java™ upside down
In functional-style programming, functions may both receive and return other functions. Instead of a function being simply a factory or producer of an object, as in traditional object-oriented programming, it is also able to create and return another function. Functions returning functions can result in cascading lambdas, especially in highly concise code. While this syntax may look quite strange at first, it has its uses. This article will help you recognize cascading lambdas and understand their nature and purpose in code.
This second part of the Stateless Spring Security series is about exploring means of authentication in a stateless way. If you missed the first part about CSRF you can find it here.
So when talking about Authentication, its all about having the client identify itself to the server in a verifiable manner. Typically this start with the server providing the client with a challenge, like a request to fill in a username / password. Today I want to focus on what happens after passing such initial (manual) challenge and how to deal with automatic re-authentication of futher HTTP requests.
Handling checked exceptions in lambda expressions can often be frustrating. Luckily, there is a type inference rule that we can exploit.
junit-quickcheck is a library that supports writing and running property-based tests in JUnit, inspired by QuickCheck for Haskell.
Property-based tests capture characteristics, or "properties", of the output of code that should be true given arbitrary inputs that meet certain criteria. For example, imagine a function that produces a list of the prime factors of a positive integer n greater than 1. Regardless of the specific value of n, the function must give a list whose members are all primes, must equal n when all multiplied together, and must be different from the factorization of a positive integer m greater than 1 and not equal to n.
Rather than testing such properties for all possible inputs, junit-quickcheck and other QuickCheck kin generate some number of random inputs, and verify that the properties hold at least for the generated inputs. This gives us some reasonable assurance over time that the properties hold true for any valid inputs.
How Spring 5 leverages Java 8’s functional syntax and a new, reactive programming model.