-
Upgrade gradle/maven wrapper, here gradle
Ref
Make sure execute this program on success build../gradlew wrapper --gradle-version 5.6.4 --distribution-type all
-
spring-boot-gradle-plugin changes,
1. bootRepackage to bootJar or bootWar 2. task wrapper(type: Wrapper) { gradleVersion = '5.6.4' } to wrapper { gradleVersion = '5.6.4' }
-
Check some of the features deprecate/renamed in gradle, deprecated etc here
-
apache camel dependency on spring boot, kafka, etc, also other libs dependencies
Note: Kafka 1.1: https://mvnrepository.com/artifact/org.apache.camel/camel-kafka/2.22.4
kafka 2.0 : https://mvnrepository.com/artifact/org.apache.camel/camel-kafka/2.23.1
https://github.com/apache/camel/blob/master/components/camel-kafka/src/main/docs/kafka-component.adoc -
Apache commons upgrade
Change:
packageimport org.apache.commons.lang
->import org.apache.commons.lang3
groupId:commons-lang
->org.apache.commons
artifactId:commons-lang
->commons-lang3
-
Spring-boot-2 related properties changes
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guidehttps://altkomsoftware.pl/en/blog/spring-boot-migration-java/
- Replace
org.springframework.boot.test.TestRestTemplate
with
org.springframework.boot.test.web.client.TestRestTemplate
extends WebMvcConfigurerAdapter with implements WebMvcConfigurer
-
Change
kebab_case
properties tosnake-case
e.g.bank_service.can_be_enable=true
tobank-service.can-be-enable=true
(Note: Changing justproperty prefix
fromkebab_case
tosnake-case
e.g.bank_service.can_be_enable=true
tobank-service.can_be_enable=true
is sufficient to make spring boot work but not encouraged because it may result in inconsist property structure) -
Properties changes:
Old property New property server.context-parameters.* server.servlet.context-parameters.* server.context-path server.servlet.context-path server.jsp.class-name server.servlet.jsp.class-name server.jsp.init-parameters.* server.servlet.jsp.init-parameters.* server.jsp.registered server.servlet.jsp.registered server.servlet-path server.servlet.path - Config Keys:
Old property New property endpoints..* management.endpoint..* endpoints.cors.* management.endpoints.web.cors.* endpoints.jmx.* management.endpoints.jmx.* management.address management.server.address management.context-path management.server.servlet.context-path management.ssl.* management.server.ssl.* management.port management.server.port Exhaustive List of Properties
-
restTemplate change:
restTemplateBuilder.requestFactory(clientHttpRequestFactory).build();
To
new RestTemplate(clientHttpRequestFactory);
-
Testing setup changes [Integration test]
@ContextConfiguration(loader = SpringApplicationContextLoader.class, classes = MainApplication.class) @WebAppConfiguration @IntegrationTest("server.port=9090")
to
@SpringBootTest(classes = MainApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,properties = [ "server.port:9090", "spring.main.allow-bean-definition-overriding=true"])
-
Mockito from 1.x to 2.x
- https://asolntsev.github.io/en/2016/10/11/mockito-2.1/
- https://support.intershop.com/kb/index.php/Display/2M8334
- https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2
Replace
org.mockito.runners.MockitoJUnitRunner;
withorg.mockito.junit.MockitoJUnitRunner;
Ref
when(mock.method(anyString())).thenReturn(result);
with
when(mock.method(nullable(String.class))).thenReturn(result);
mockitoVersion = '3.1.5'
If there is any following type of code
@InjectMock @Autowire interface interfaceImplementation // Change it to the following because InjectMock does not work on the interface, it needs concrete implementation @InjectMock @Autowire InterfaceImpl interfaceImplementation
If older code had used Whitebox functionality then it should be replaced since in Mockito2.x it is not supported
Ref And If you are using Spring (the spring-test library specifically), you can simply use
ReflectionTestUtils.setField
instead ofWhitebox.setInternalState
incase if you want to use junit-5
Ref: https://howtodoinjava.com/spring-boot2/junit5-with-spring-boot2/ -
Kafka upgrade:
-
If you need, just thin jar and not fat jar, then
bootJar.enable=false jar.enable=true
-
Testing spring boot2:
@SpringApplicationConfiguration
is no longer available, instead you must use@SpringBootTest
. -
Analyze dependencies
-
Dropwizard metrics support is not available for spring boot 2, need to use a micrometer, or need to add it explicitly
./gradlew dependencies ./gradlew -q dependencyInsight --dependency spring-boot-starter-web ./gradlew dependencyInsight --dependency logging
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)