Merhaba arkadaşlar, bu yazımda Spring Lifecycle(Yaşam Döngüsü) konusu anlatacağım.
Spring yaşam döngüsü, Bean oluşturulduğunda, başladığında ya da bitiminde onu yönetmemizi sağlar. Burada karşımızda 4 adet kavram çıkacaktır şimdi bunları inceleyelim:
- InitializingBean
- DisposableBean
- ApplicationContextAware
- BeanNameAware
1-)InitializingBean
Bir interfacedir. Bu interface sınıfımıza implement edildiğinde afterPropertiesSet() metodunu override ederiz. Bu metot bizim init metodumuzdur yani bean oluşturulduktan sonraki ilk çalışan metotdur.
2-)DisponsableBean
Bir interfacedir. Bu interface sınıfımıza implement edildiğinde destroy() metodunu override ederiz. Bu metot bizim destroy metodumuzdur yani bean bitirilmeden son çalışan metotdur.
3-)ApplicationContextAware
Bir interfacedir. Bu interface Spring konteynere tarafından Bean’e erişmemizi sağlar. Bu erişimi de setApplicationContext() metodu sayesinde yapar.
4-)BeanNameAware
Bir interfacedir. Bu interface oluşturulan Beanimize erişmemize ve bilgilerine ulaşmamızı sağlar. Bu erişimi setBeanName() metodu sayesinde yapar.
Şimdi 4 adet kavramında kod içerisinde görelim:
Person.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
public class Person implements InitializingBean,DisposableBean,ApplicationContextAware,BeanNameAware { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } public void print() { System.out.println("Name =>"+name+" Age =>"+age); } public void myInit() { System.out.println("MyInit Metot is running..."); } public void myDestroy() { System.out.println("MyDestroy Metot is running..."); } @Override public void destroy() throws Exception { System.out.println("Destroy Metot is running..."); } @Override public void afterPropertiesSet() throws Exception { System.out.println("İnit Metot is running..."); } @Override public void setBeanName(String name) { System.out.println("Bean name=> "+name); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println(applicationContext); } //Getters and Setters |
Test.java
1 2 3 4 5 6 7 8 9 |
public class Test { public static void main(String[] args) { ApplicationContext applicationContext=new ClassPathXmlApplicationContext("_010_application.xml"); Person person=applicationContext.getBean("person",Person.class); person.print(); ((ClassPathXmlApplicationContext)applicationContext).close(); } } |
application.xml
1 2 3 |
<bean id="person" class="_010_bean_lifecycle_xml.Person"> <constructor-arg name="age" value="22" /> <constructor-arg name="name" value="Furkan" /> </bean> |
Çıktı :
Person sınıfında bulunan MyInit() ve MyDestroy() metotlarını applicaton.xml dosyamızda tanımlayalım.
1 2 3 4 |
<bean id="person" class="_010_bean_lifecycle_xml.Person" init-method="myInit" destroy-method="myDestroy"> <constructor-arg name="age" value="22" /> <constructor-arg name="name" value="Furkan" /> </bean> |
Görüldüğü gibi init ve destroy metotlarımızı tanımladık. Bu yeni hali ile çıktıya tekrardan göz atalım:
Bu yazımı burada bitiriyorum diğer yazılarımda görüşmek üzere…