Upgrading Spring Data Other people wasn’t simple, but that had little related to Spring Analysis Rest by itself

That being said, it might not sound right to accomplish that. I can not ask the developers as to why it absolutely was done this ways, they aren’t here any longer. So it project’s facts can only just learn and their Git history.

Instructions discovered updating Spring season Analysis Others

I believe our company is playing with Spring Study Other individuals incorrect, incorrectly combo WebMVC rules. If we had not done so right away, one thing might have run far easier.

We are today completed with the latest Spring season Analysis Others migration. It is the right time to circulate onto all of our next Springtime component, Springtime Kafka.

Springtime Kafka

Spring season Kafka, or in other words Springtime for Apache Kafka , is a superb treatment for fool around with Kafka on the Spring season methods. It offers effortless-to-explore templates getting sending messages and you may typical Springtime annotations to have drinking texts.

Configuring the latest consumers

step one [ERROR] coffee.lang.IllegalStateException: Failed to load ApplicationContext 2 3 As a result of: org.springframework.kidney beans.factory.BeanCreationException: Mistake undertaking bean having term 'consumerFactory' laid out in classification roadway investment [ de / application / config / KafkaConsumerConfig . class ]: cuatro 5 Caused by: java . lang . NullPointerException six at java . feet / java . util . concurrent . ConcurrentHashMap . putVal ( ConcurrentHashMap . java: ten11 ) seven at java . base / java . util . concurrent . ConcurrentHashMap . init >( ConcurrentHashMap . java: 852 ) 8 at org . springframework . kafka . center . DefaultKafkaConsumerFactory . init >( DefaultKafkaConsumerFactory . java: 125 ) nine at org . springframework . kafka . core . DefaultKafkaConsumerFactory . init >( DefaultKafkaConsumerFactory . java: 98 ) 10 at de . app . config . KafkaConsumerConfig . consumerFactory ( AbstractKafkaConsumerConfig . java: 120 ) 

It turns out, we had been configuring the consumerConfigs bean and setting null values in its properties. The following change from HashMap to ConcurrentHashMap means we can no longer configure null values. We refactored our code and now tests are green. Easy-peasy.

Kafka texts having JsonFilter


1 [ERROR] org .apache .kafka mon .errors .SerializationException : Normally 't serialize data [Feel [payload=MyClass(Id=201000000041600097, . ] getting thing [my-topic] 2 3 For the reason that: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot care for PropertyFilter that have id ‘myclassFilter' ; zero FilterProvider set up (as a consequence of reference strings: de- .attempt .Experiences [ "payload" ] ) 4 in the com .fasterxml .jackson .databind .exc .InvalidDefinitionException .out of (InvalidDefinitionException .coffees : 77 ) 

Some of our Java Beans use ato manipulate the serialization and deserialization. This requires a propertyFilter to be configured on the ObjectMapper.
Spring for Apache Kafka made a change to the JsonSerializer , introducing an ObjectWriter . When the ObjectWriter instance is created, the ObjectMapper configuration is copied, not referenced. Our test case was re-configuring the ObjectMapper with the appropriate propertyFilter after the ObjectWriter instance was created. Hence, the ObjectWriter didn't know anything about the propertyFilter (since the configuration was already copied). After some refactoring, changing how we create and configure the JsonSerializer , our test cases were green.
Running our build $ mvn clean verify finally resulted in a green build. Everything is working as it should. We pushed our changes to Bitbucket mujeres Lituano and everything built like a charm.

Sessions learned updating Springtime Kafka


Courses discovered during the Spring Footwear update


Spring and Spring Boot do a great job documenting their releases, their release notes are well maintained. That being said, upgrading was challenging, it took quite a while before everything was working again. A big part of that is on us, for not following best practices, guidelines, etc. A lot of this code was written when the team was just starting out with Spring and Spring Boot. Code evolves over time, without refactoring and applying those latest practices. Eventually that catches up with you, but we use this as a learning experience and improved things. Our test cases are now significantly better, and we'll keep a closer eye on them moving forward.