Şu satır dahil ederiz.
import javax.annotation.PostConstruct;
Yeni kodlarda şu satır dahil ederiz.
import
jakarta.annotation.PostConstruct;
Spring'e ait gibi görünse de aslında bu bir Java anotasyonu. Şöyle yaparız.
public class Foo {
...
@PostConstruct
public void fooInit(){
...
}
public Foo() {
...
}
}
Açıklaması şöyle1. When the constructor is called, the bean is not yet initialized - i.e. no dependencies are injected. In the @PostConstruct method the bean is fully initialized and you can use the dependencies.
2. this is the contract that guarantees that this method will be invoked only once in the bean lifecycle. It may happen (though unlikely) that a bean is instantiated multiple times by the container in its internal working, but it guarantees that @PostConstruct will be invoked only once.
Spring Birden Fazlan @PostConstruct Çalıştırabilir
Örnek
Şöyle yaparız
// Spring can also handle more than one method annotated with @PostConstruct, like this:
@PostConstruct
public void init() {
log.info("1111 tests");
}
@PostConstruct
public void init2() {
log.info("2222 tests");
}
Elimizde getter ve setter metodları olan bir sınıf olsun. Eğer constructor içinde application nesnesine erişmek istersek null pointer exception fırlatılır. Çünkü constructor metodu çalıştı ancak daha setter metodu çağrılmadı. Dolayısıyla constructor içine yazmayı düşünüdüğümüz kodu @PostConstruct olarak işaretli bir metoda taşımamız gerekir.
public class Foo {
private String application;
public String getApplication() {
return application;
}
public void setApplication(String application) {
this.application = application;
}
...
}
Hiç yorum yok:
Yorum Gönder