Spring Ders11 - Dependency Injection Alternatifleri | Annotation-Driven Autowiring


   Annotation-Driven Autowiring (Anotasyon Tabanlı Autowiring), autowiring yapısının başka bir modelidir. Bu yapıda bağımlılığın olacağı .xml dosyasında değil de direkt olarak java sınıflarında belirtilir.

Ayrıca xml dosyasında isim uzaylarına context uzayı ve aşağıdaki ifade eklenmelidir.


<context:annotation-config/>


  Annotation-Driven Autowiring (Anotasyon Tabanlı Autowiring) ,.
  • Değişkenlere,
  • Metotlara,
  • Constructor metotlara uygulanabilir.
Tüm bunlar için sadece,


@AutoWired


anahtar kelimesi eklenmesi yeterlidir.

Örnek olarak,

Bir nesneye uygulanması


public class B{
   ...
    @AutoWired
    private A a;
    ...
}


Bir metoda uygulanması


public class B{
   ...
    private A a;

    @AutoWired
    public void setA(){
        this.a=a;
    }
    ...
}


Bir constructora uygulanması


public class B{
   ...
    private A a;
     
    @AutoWired
    public B ( A a ){
        this.a=a;
    }
    ...
}


Aşağıda bir değişkene (nesneye) autowiring uygulaması yapılan bir örnek program verilmiştir.

Main.java
package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

 public static void main(String[] args) {

  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

  B b=(B)context.getBean("b");
  
  
  System.out.println("B sinifi içerisindeki a nesnesinin sayi degeri : "+b.getA().getSayi());
  
 }

}

A.java
package test;

public class A {

 private int sayi;

 public A() {
  System.out.println("A nesnesi oluşturuldu.");
 }

 public int getSayi() {
  return sayi;
 }

 public void setSayi(int sayi) {
  this.sayi = sayi;
 }

}

B.java
package test;

import org.springframework.beans.factory.annotation.Autowired;

public class B {

 @Autowired
 private A a;

 public B() {
  System.out.println("B nesnesi oluşturuldu.");
 }

 
 public A getA() {
  return a;
 }

 public void setA(A a) {
  this.a = a;
 }

}

applicationContex.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 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.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

 <bean id="a" class="test.A">
  <property name="sayi" value="21" />
 </bean>

 <bean id="b" class="test.B"></bean>

 <context:annotation-config />

</beans>

spring Annotation-Driven Autowiring

Yorumlar

Bu blogdaki popüler yayınlar

Java SE Ders24 - Composition (Kompozisyon)

Spring Ders20 - Aspect Oriented Programming - AspectJ Annotation Style

JSF Ders30 - Page Template (Sayfa Şablonu)