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

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *