I have a class Banana
which has a @PostConstruct
method that I want to run after the class object is created. I am creating the object of this class using these calls
Cat cat = new Cat();
Banana b = new Banana(cat);
So from the logs I understand that this @PostConstruct
method is not being called when the Banana
object is being created. I think the way I have implemented is not the correct usage. Can someone guide me how do I correctly implement this as this is my first task on Java project with Spring Boot. I need that setup code to run after Banana
object is created, so is there any other way apart from @PostConstruct
@Slf4j
public class Banana {
public Banana(Cat cat) {
this.cat = cat;
}
private Cat cat;
@PostConstruct
public void setup() {
// some code
}
public void execute() {
// some code
}
}
All the annotations honored by spring (@PostConstruct
, @PreDestroy
, @Autowired
and many others) are applicable when the object is created by spring itself.
In this case spring can analyze the class, handle the annotations, etc.
When you instantiate by yourself (new Banana()
) - spring doesn't even know that your object exists and hence can't call any of its method, so you're forced doing it by yourself.
So yes, in this case you will have to call the method annotated with @PostConstruct
manually, which means that the @PostConstruct
annotation is pretty useless can can be omitted at all.