Spring – Ders 16 Injecting with JavaBased Configuration

Merhaba Arkadaslar,
Bu Spring dersine kadar butun bean tanimlamalarini hep XML dosyamizda gerceklestirmistik. Fakat Spring bize bir guzellik daha yapiyor ve @Configuration ve @Bean notasyonlari ile Java-Based injection yapmamiza olanak sagliyor.

Daha onceki derslerde <context:component-scan> etiket yapisi ile Spring’in beanleri nasil otomatik olarak aradigini ve bagladigini incelemistik. Java-Based Configuration yapisinda @Configuration notasyonunu kullanan siniflar otomatik olarak yuklenecektir. @Configuration notasyonu ilgili sinifin bir ya da daha fazla Spring Bean deklarasyonu icerdigini ifade etmektedir. @Configuration notasyonu XML yapisindaki <beans> etiketine denk gelmektedir.

Bir diger notasyonumuz olan @Bean notasyonu da XML yapisinda kullandigimiz <bean> etiketine denk gelmektedir.

HelloJavaBasedConfiguration.java

package erguder.levent._16.javabased.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HelloJavaBasedConfiguration {

	@Bean
	public HelloJavaBean helloJavaBean() {
		return new HelloJavaBean();

	}
}

Bu yapi onceki derslerde kullandigimiz XML yapisindaki su yapiya karsilik gelmektedir ;

<beans>
   <bean id="helloJavaBean" class="erguder.levent._16.javabased.configuration.HelloJavaBean" />
</beans>


HelloJavaBean.java

package erguder.levent._16.javabased.configuration;

public class HelloJavaBean {
	private String message;

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public void writeMessage() {
		System.out.println(message);
	}
}


TestJavaBasedInjection.java

package erguder.levent._16.javabased.configuration;

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

public class TestJavaBasedInjection {
	public static void main(String[] args) {
		ApplicationContext ctx =
				new AnnotationConfigApplicationContext(HelloJavaBasedConfiguration.class);

		HelloJavaBean helloJavaBean = ctx.getBean(HelloJavaBean.class);
		helloJavaBean.setMessage("Yaşam kaybetmeyi öğrenme sanatıdır.Ahmet Ümit");
		helloJavaBean.writeMessage();
	}
}

Daha onceki derslerde konfigurasyon icin XML dosyasi kullanmistik ve bunun icin ApplicationContext icin su yapiyi  kullanmistik,

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

Burada konfigurasyonumuzu XML dosyamiz uzerinden degil Java-Based yaptigimiz icin , konfigurasyonu gerceklestirdigimiz sinifin class literalini arguman olarak veriyoruz.
Benzer sekilde getBean metodumuza HelloJavaBean sinifimizin class literalini arguman olarak veriyoruz.

Test sinifimizi calistiralim ve sonucu gorelim ;
Yaşam kaybetmeyi öğrenme sanatıdır.Ahmet Ümit

Kaynak kodlar: SpringProject_v16

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 *