Graalvm memory usage

This weekend I did some graalvm testing on our Openshift environment to see if we could run our microservices with native graalvm images with low memory usages.

It seemed that using a graalvm native image used even more memory when running under load then running the same application using java.

Starting a pod that runs a native image did start with very little memory (13MB), but when putting some http load on the application, the memory quickly went to 270MB and never went back.

Lees meer »

Mutual SSL authentication

In deze blog laat ik zien wat de stappen zijn om certificaten te maken voor server en client applicaties.

Voor testen kun je de key- en trust stores maken zonder CA. Op productie zal er altijd een CA tussen zitten. Beide manieren worden hieronder besproken.

Een demo project met een server en client die ssl gebruiken (ook als authenticatie) is hier te vinden:

https://github.com/robbertvdzon/clientcertificateexample

Lees meer »

Going springless: no more magic!

Working with Spring Boot (but also working with JEE/Jakarta EE) can be a joyful experience. Within minutes you can create a  new RESTfull webservice  to which you can quickly and easily add circuit breakers, distributed tracing, security, database access, accessing other microservices, fallbacks, retries, service discovery, configuration management, many other things and of course you can use the great Spring DI framework.

Lees meer »

List of Spring Boot Starter Dependencies

[Index of Spring blogs]

Core:

Lees meer »

Testing the Spring MVC layer

[Index of Spring blogs]

Use “spring-boot-starter-test” to add all dependencies:

    org.springframework.boot
    spring-boot-starter-test
    test

You can annotate the test class with :

  • (nothing)
  • @SpringBootTest(webEnvironment = MOCK / RANDOM_PORT / DEFINED_PORT)
  • @AutoConfigureMockMvc
  • @WebMvcTest

To make rest call’s to the controllers, you can use one of the following:

  • RestTemplate
  • TestRestTemplate
  • RestAssuredMockMvc
  • MockMvc
  • WebTestClient (only when using webflux)

@SpringBootTest will load your complete Spring application, but without the Servlet container when specifying (webEnvironment = MOCK).
When using webEnvironment = RANDOM_PORT, a random port is used (which you can find in the test using @LocalServerPort).
It is also possible to autowire a TestRestTemplate, RestAssuredMockMvc or MockMvc which you can use to test the application using relative url’s.

@MockBean can be used to mock any bean in the application environment.

To test the serialization and deserialization of a JSON object, you can use @JsonTest

To test a web client, you can use @RestClientTest

Examples of using the different annotations and rest clients can be found below:

Lees meer »

Spring WebFlux samples and links

[Index of Spring blogs]

Samples:
https://github.com/robbertvdzon/springfluxsamples/blob/master/src/main/java/com/example/springwebflux/SpringwebfluxApplication.java

Spring5 documentation about webFlux:
https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux

Spring Boot documentation about webFlux:
https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#boot-features-webflux

Spring testing documentation about Spring Web Reactive:
https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#mock-objects-web-reactive

 

Spring WebMVC samples and links

[Index of Spring blogs]

Samples:
https://github.com/robbertvdzon/spring-web-mvc-samples/blob/master/src/main/java/com/example/demo/DemoApplication.java

Spring5 documentation about webMVC:
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html

Spring Boot documentation about webMVC:
https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#boot-features-developing-web-applications

Spring testing documentation about MVC Test Framework:
https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#spring-mvc-test-framework