Some time ago, I was working on a project where I had to fix an issue that was raised by our OWASP Zap scanner, which is a free security tool that runs in the test phase of the Jenkins build of the project.
It checks for security vulnerabilities that you want to prevent from going to Production.
Continue reading →
Jib is an open-source Java library from Google for creating Docker images for Java applications.
Jib can be used as Maven or Gradle plugin in our Spring Boot project.
One of the nice feature of Jib is that it adds layers with our classes, resources and dependency libraries for the Docker image.
This means that when only class files have changed, the classes layer is rebuild, but the others remain the same.
Therefore the creation of a Docker image with our Spring Boot application is also very fast (after the first creation).
Also the Maven and Gradle plugins have sensible defaults, like using the project name and version as image name, so we don’t have to configure anything in our build tool.
Although Jib provides options to configure other values for the defaults, for example to change the JVM options passed on to the application.
Let’s see Jib in action for a simple Spring Boot application.
In our example we use Gradle as build tool with the following Spring Boot application:
Continue reading →
Document attributes in Asciidoctor are very powerful.
We can assign values to a document attributes and reference the attribute name in our document enclosed between curly braces.
Asciidoctor will fill in the value when the document is transformed.
Instead of a plain value we can also use styling markup in the document attribute definition.
We must use the passthrough macro and allow for quote substitution.
In the following example document we define three document attributes: cl-added
, cl-updated
and cl-changed
.
We use the passthrough macro, quotes substation to assign CSS classes:
Continue reading →
When we use the Micronaut command line commands to generate controllers, beans and more, the classes will have a default package name.
We can use a fully qualified package name for the class we want to generate, but when we only define a class name, Micronaut will use a default package name automatically.
We can set the default package for an application when we first create an application with the create-app
command.
But we can also alter the default package name for an existing Micronaut application.
To set the default package name when we create a new application we must include the package name in our application name.
For example when we want to use the default package name mrhaki.micronaut
for an application that is called book-service
we must use the following create-app
command:
Continue reading →
In a previous post we learned how to add build information to the /info
endpoint in our application.
We can add custom information to the /info
endpoint via our application configuration or via a bean by implementing the InfoSource
interface.
Remember we need to add the io.micronaut:management
dependency to our application for this feature.
Any configuration property that is prefixed with info
will be exposed via the /info
endpoint.
We can define the properties in configuration files, using Java system properties or system environment variables.
In the following example configuration file we add the property info.sample.message
:
Continue reading →