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.


MathTeacher.java

@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();
    }
    
}