Java Annotation – (Ioc)İnversion Of Control

    Annotation(Not) kavramı Java programlama diline JDK 5.0 ile dahil olmuştur.Annotation’lar bir Java programının yapısını değiştirmeyen,sadece yazılan bir program modülü hakkında bilgi veren yapılardır.

Main Class

package com.Alpay;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class App 
{
public static void main( String[] args )
{

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");


Egitmen benimEgitmen = context.getBean("",Egitmen.class);

benimEgitmen.egitimPlaniVer();


context.close();
}
}

JavaEgitmeni.class

package com.Alpay;

import org.springframework.stereotype.Component;


public class JavaEgitmeni implements Egitmen {

@Override
public void egitimPlaniVer() {
System.out.println("Java Eğitim planları vermekteyim");
}

}


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4-2.xsd">



Yukarıdaki durumda run as dersek hata alacağız çünkü component scan geldi burada scan işlemini gerçekleştirdi  henüz herhangi bir annotation kullanmadık. Yani biz buradan eğitmenden bean almak istiyoruz, springe bizim java eğitmeni classımız , biz buradan bir bean oluşturmak istediğimizi söylemedik.

Dolayısıyla buraya ilk seçenek olarak classın hemen üzerine annotation ekleyeceğiz. biliyorsunuz annotation çok farklı yerlerde yer alabilmektedir. Metodlar değişkenler fieldların ve classın üzerindede yer alabilmektedir.

JavaEgitmeni classımızın  @Component(“javaEgitmeni”) yazıyoruz.

javaEgitmeni yazdığımız kısım bean adıdır. ve bu adı biz vermeyede biliriz.  Kendisi otomatik olarak sınıf adının baş harfini küçültüp kendisi vermektedir.

Verdiğimiz bu bean adını Main.classımız da  kullanabiliriz. Oradan bir bean oluşturup bunu orada get etmiş olabiliyorum hemde interface implement  işlemini arka planda yapmış oluyoruz. Arka planda neler mi oluyor ? Egitmen classından  otomatik olarak,  egitmen clasının implement edilmiş componet yani benim buradan bean oluşturmam lazım ve bean adımızı da burada  veriyoruz. Bean adımız javaEgitmeni olarak  arka tarafta o beanden ınterfaceden bir şey oluşturduğum zaman  spring bizim için implement edilmiş classlar arasından hangi bean adını verdiğim kısımı seçiyor. İstediğim metoda direk ulaşabiliyorum.

Bir başka konuda görüşmek üzere.