Spring – Ders 14 Autowiring – 05 @Inject -02
Merhaba Arkadaslar,
Bir onceki yazimizda @Inject ve @Named notasyonlarini kullanmistik. Bu yazimizda ornek bir uygulama daha yapalim.
Autowiring islemi icin birden fazla uygun bean oldugunda Spring in kafasi karisiyordu 🙂 Bu karisikligi ortadan kaldirmak icin @Qualifier notasyonunu @Qualifier(“beanid”) seklinde kullanmistik. Ayni sekilde @Named notasyonu icin de gecerlidir.
Address.java
public class Address { private String city; private String district; //getter setter }
Employee.java
public class Employee { private String name; private int age; @Inject @Named("address_id1") private Address address; //getter setter }
tutorial_14_inject.bean.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> <bean id="employeeid" class="erguder.levent._14.autowiring.injectJSR330.bean.Employee"> <property name="name" value="Levent Erguder" /> <property name="age" value="23" /> </bean> <bean id="address_id1" class="erguder.levent._14.autowiring.injectJSR330.bean.Address"> <property name="city" value="Istanbul" /> <property name="district" value="Umraniye" /> </bean> <bean id="address_id2" class="erguder.levent._14.autowiring.injectJSR330.bean.Address"> <property name="city" value="Sivas" /> <property name="district" value="Hafik" /> </bean> </beans>
@Qualifier ornegimizde kullandigimiz xml dosyamizi burada da kullandik.
TestAutoWiringInject.java
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestAutoWiringInject { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("tutorial_14_inject.bean.xml"); Employee emp1 = (Employee) context.getBean("employeeid"); System.out.println(emp1); } }
Ornegimizi calistirdigimizda ;
Employee [name=Levent Erguder, age=23, address=Address [city=Istanbul, district=Umraniye]]
@Inject @Named("address_id2") private Address address;
address_id1 yerine address_id2 yazdigimizda , id’si address_id2 olan bean ile autowiring islemi gerceklesecektir;
Employee [name=Levent Erguder, age=23, address=Address [city=Sivas, district=Hafik]]
Kaynak kodlar : SpringProject_v14
Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust
Leave a Reply