Bir beanin yaşam döngüsünü yukarıda özetlendiği gibidir şöyle ki biz beanimizin initialization sürecinden hemen sonra @PostConstruct ile gerekli business login methodları yada veritabanını yükleme gibi bazı ayarları yapabilirken, "bean destruction" sürecinde ise hemen @PreDestroy ile açık olan veritabanı,socketleri kapatma gibi temizleme işlemlerini yapabiliriz.
@Component
@Primary
public class MathTeacher implements Teacher{
public MathTeacher() {
System.out.println("MathTeacher başlatıldı");
}
@PostConstruct
public void afterConstruction() {
System.out.println("[PostConstruct:MathTeacher] Constructordan sonrası çalıştı");
}
@PreDestroy
public void beforeDestruction() {
System.out.println("[PreDestroy:MathTeacher] Nesneyi yıkımdan öncesi");
}
@Override
public String getName() {
return "Minter Math";
}
}BeanLifecycleRestController.java
@RestController
public class BeanLifecycleRestController {
private final Teacher teacher;
@Autowired
public BeanLifecycleRestController(Teacher teacher) {
this.teacher = teacher;
}
@RequestMapping(path="/bean/lifecycle",method=RequestMethod.GET)
public String getLifeCycle(){
return this.teacher.getName();
}
}