Spring Boot Profile Nedir?
Spring Boot Dersleri‘ne devam ediyoruz.
Bu yazıda Spring Boot’ta Profile anotasyonundan bahsedeceğiz. Profile anotasyonu uygulamamızdaki farklı çalışma isterlerine göre programımızın hangi işlevinin çalışacağını çalışacağını isteğimize göre seçmemizi sağlamaktadır.
Şimdi bir örnek ile Spring Boot ile Profile kullanımına bakacağız. Bu uygulamamızda iki adet çıktı üreticimiz var birisi PDF çıktısı diğeri ise HTML çıktısı ürettiğini varsayalım. Bu iki çıktınında kodlarını yazacağız ardından istediğimiz bir çıktıyı seçip uygulamanın o seçtiğimiz işlevi yapmasını sağlacağız. Örneğimiz maven projesi olup yazının sonunda ki linkten projenin tamamına ulaşabileceksiniz.
Bir Spring Boot Projesi oluşturalım. (bakınız: Spring Boot Projesi Oluşturmak) Proje yapımız , paketleri ve beanler şu şekilde olacak.
Print Servisimiz bir interface oluşturalım. Bu interface merhaba adında olacak ve geri dönüş olarak girilen ismi döndürecek.
package com.burakkutbay.springprofileexample.service; import org.springframework.stereotype.Component; @Component public interface PrintService { public String printHello(String name); }
Yazdığımız interface’i implement ederek sözde Pdf ve Html çıktısı üretecek servisimizi yazalım.
Şimdi Pdf servisimizi yazalım.
package com.burakkutbay.springprofileexample.service; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component @Profile("pdf") public class PrintServicePdf implements PrintService{ @Override public String printHello(String name) { return "Pdf Printed : " + name ; } }
Pdf servisimizi yazalım.
package com.burakkutbay.springprofileexample.service; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Component @Profile("html") public class PrintServiceHtml implements PrintService{ @Override public String printHello(String name) { return "Html Printed : " +name; } }
Burada asıl dikkat edeceğimiz şey bu Component anotasyonu ile işaretlenmiş olan beanimizi @Profile olarak işaretliyoruz ve bir isim veriyoruz. Bu işaretlemeyi yaptıktan sonra hangi Spring Componenetinin çalışacağını application.properties dosyasında belirtiyoruz.
spring.profiles.active=pdf
spring.profiles.active attribute’na pdf i seçerek Pdf componentinin çalışmasını sağlamaktayız. Html yazarsak o component çalışacaktı. Controller’imizi yazalım.
package com.burakkutbay.springprofileexample.controller; import com.burakkutbay.springprofileexample.service.PrintService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(path = "/") public class PrintController { @Autowired private PrintService printService; @RequestMapping(path = "hello/{name}", method = RequestMethod.GET) public String hello(@PathVariable(value = "name") String name){ return printService.printHello(name); } }
Controller’imiz de yaptığımız işlemlerden bahsedecek olursak. http://localhost/hello adresinden bir parametre almayı bekliyoruz. Bu göndereceğimiz parametre sonucunda PrintService’miz çalışacak ve application.properties dosyasında hangi componenti seçtiysek o çalışıp bize değer döndüerecektir.
Programımızı çalıştıracak ana classımızı yazalım.
package com.burakkutbay.springprofileexample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringProfileExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringProfileExampleApplication.class, args); } }
Şimdi sıra çalıştırmaya geldi. http://localhost/hello/burak yazdığımızda karşımıza çıkan sonuca bakalım.
Pdf Printed : burak
Bu çıktıyı almamazın nedeni profil olarak pdf seçilmesidir. html olarak seçersek sonuç;
Html Printed : burak
Çıktımız şeklinde olmaktadır.
Projenin Kaynak Kodlarını Github Üzerinden Görünlüte / İndir
Önceki Ders: CLI ile Spring Boot Uygulaması | Spring Boot Dersleri | Sonraki Ders: Spring Boot Developer Tools Nedir ve Kullanımı |
No Comment! Be the first one.