close
Newest Post

A Bootiful Podcast: Dr. Malini Bhandaru on EdgeX and the opportunities for developers in the IoT space

Read more

Spring Fu 0.3.0 and beyond

I am happy to announce that Spring Fu 0.3.0 is available. As a reminder, Spring Fu is an incubator for Spring Boot programmatic configuration using DSLs in order to configure it explicitly with code in a declarative way, achieving great discoverability thanks to auto-complete.

JaFu is back!

This new milestone brings back JaFu (the Java DSL) in addition to KoFu (the Kotlin DSL). JaFu was removed in 0.1.0 because at that point, I had not the bandwidth to support both Java and Kotlin DSLs, and in term of API I was not sure that the Java variant was attractive enough to justify such effort, but I have changed my mind for various reasons:

  • I received a lot of requests to bring it back

  • Java as a language is moving faster

  • Getting more control on how configuration is applied is interesting for Java developers as well as Kotlin ones

  • Functional approach is naturally very efficient on the JVM and a good fit with GraalVM native images

  • 2 great new contributors have join the team: Audrey Neveu with a focus on KoFu and Arjen Poutsma with a focus on JaFu. Welcome to them!

Read more

Spring Tools 4.6.2 released

Dear Spring Community,

I am happy to announce the 4.6.2 release of the Spring Tools 4 for Eclipse, Visual Studio Code, and Theia.

Highlights from this release include:

  • (Spring Boot) improvement: additional check to auto-connect live hovers only when actuators are on the project classpath (#450)
  • (Spring Boot) improvement: added content assist for keys that exist in YAML and properties files (#427)
  • (Spring Boot) improvement: Yaml editor gives error when using @[email protected] placeholders (#190)
  • (Spring Boot) bugfix: super type hierarchy lookup might fail
  • (Spring Boot) bugfix: quickly restarting app caused error popup from live hover mechanism to show up
  • (Eclipse) improvement: early access version of new Spring symbols view
  • (Eclipse) performance: fixed several issues that could have caused slowing down source code editing in the Java editor (#435) (#405)
  • (Eclipse) improvement: manually registered servlet mapping is missing from live request mapping tab in boot dashboard (#452)
  • (Eclipse) bugfix: fixed compatibility issue with newer m2e versions that ship with Eclipse 2020-06
  • (Eclipse) bugfix: fixed lots of NPE when scrolling down in live hovers
  • (VSCode/Theia) bugfix: Fix null reference when no JVM was found - contributed by @tfriem
  • (Concourse) improvement: add support for set-pipeline step (#464) - contributed by @deepakmohanakrishnan1984
Read more

What's new in Spring Data Elasticsearch 4.0

This article continues our blog post series on What’s new in Spring Data Neumann. Today’s installment explains New and Noteworthy in Spring Data Elasticsearch. This blog post was written by P.J. Meisch who maintains the Spring Data Elasticsearch module.

This release addresses more than 140 issues, with more than 30 bugs fixed.

Spring Data Elasticsearch now uses Elasticsearch 7, 7.6.2 in particular. Elasticsearch clusters running on 6.x versions are not supported anymore. The ElasticsearchTemplate class is deprecated as it uses the TransportClient to access Elasticsearch, which itself is deprecated since Elasticsearch version 7.+ Users should switch to ElasticsearchRestTemplate or ReactiveElasticsearchTemplate.

Read more

This Week in Spring - May 26th, 2020

Hi, Spring fans! Welcome to another installment of This Week in Spring! How’re things? My family and I spent the Memorial Day holiday weekend mostly playing video games and trying random new restaurants for delivery. Now, it’s back to the grind and there are a ton of things to look at so let’s get to it!

Read more

Getting Started With RSocket: Testing Spring Boot Responders

Reading time: about 6 minutes
Coding time: about 15 minutes

If you’ve been following this series, by now, you’ll have built a Spring Boot prototype that illustrates many of the features present in RSocket. This code isn’t production code, though; it’s a prototype, a stepping stone on your RSocket journey. For production code, I’d expect all the usual quality assurance and testing rules to apply. So in this exercise, I’ll show you how to write integration tests for RSocket responders, so you can get one step closer to production.

Read more

Migrating to Spring Data JDBC 2.0

With Spring Data JDBC 2.0, we had to introduce some breaking changes. The goal of this article is to help in the migration process.

TL;DR

  1. Use the default letter casing for custom column and table names or quote the names for table generation exactly as used in the annotations.

  2. Use AbstractJdbcConfiguration for custom configuration of the application context.

  3. Register a Dialect if necessary.

  4. Review event-handling code and ensure the data you try to use is not null.

Quoting of Identifiers

Spring Data JDBC 1.x uses table and column names mostly without changing them. This causes problems when you use an SQL key word as a property or entity name or when you tried to use some special character in a column name.

For this reason Spring Data JDBC 2.0 quotes all identifiers by default. This makes the names case-sensitive, at least for most databases. Since we also, by default, convert the names generated into the default letter casing used by the database, this should not cause any problems, assuming you used no quotes in the CREATE TABLE statements, as most people do.

For example, consider a Student entity, as follows:

class Student {

    @Id
    Long id;
    String name;
}

A matching table for H2 could look like this:

CREATE TABLE STUDENT
(
    ID SERIAL PRIMARY KEY,
    NAME  VARCHAR(30)
);

That example is the same as in previous versions of Spring Data JDBC. Things change when you specify column or table names explicitly with @Column, @Table, or @MappedCollection. In this case, we assume that you specify the name exactly as you want it to be used and, therefore, the table definition has to use quoted identifiers or the names have to use the default letter casing of your database, as in this modified student example:

@Table("student")
class Student {

    @Id
    Long id;
    @Column("LAST_NAME")
    String name;
}

A matching table for H2 could look like this:

CREATE TABLE "student" -- (1)
(
    ID SERIAL PRIMARY KEY,
    LAST_NAME  VARCHAR(30) -- (2)
);
  1. The table name must be quoted, because it is given in lower-case letters but H2 converts unquoted SQL identifiers to upper case by default.

  2. LAST_NAME does not have to get quoted because it already uses the default letter casing.

See below how to disable the forced quoting if you really want to.

Read more

Spring Cloud Data Flow 2.5.1 Released

Spring Cloud Data Flow team is pleased to announce the release of 2.5.1.

This release includes some bug fixes with the some of the notable changes as follows:

  • DeploymentProperties parsing fixes.
  • Removed behaviour for server to attempt to contact dockerhub during a start.
  • Fixes to dataflow client to re-authorize when oauth client credentials are used.
  • Liveness and readiness probe changes to kubernetes deployment files.
  • Upgrades to Spring Boot 2.2.7 and Spring Cloud Hoxton.SR4. New dependencies from these fixed an issue in Spring Data Rest which caused repository mappings DATAREST-1502 to stop working and effectively caused UI and Skipper to start behaving erratically in Data Flow 2.5.0.
Read more