@PostConstruct

The @PostConstruct annotation can be used to call a method of a class after the initialization of a bean is finished:

import jakarta.annotation.PostConstruct;

@PostConstruct
public void init() {
    // Do stuff
}

This can be useful if a field of a class is dependent on another field that is injected:

@Value("${some.property}")
private String someProperty;

private String dependentProperty = foo(someProperty);

The code fragment above will crash because someProperty is not initialized in time. The solution is to assign the dependentProperty after the bean is created:

import jakarta.annotation.PostConstruct;

@Value("${some.property}")
private String someProperty;

private String dependentProperty;

@PostConstruct
public void init() {
    dependentProperty = foo(someProperty);
}

As of JDK 11 the @PostConstruct and @PreDestroy annotations were moved from javax.annotation to jakarta.annotation.