Spring Boot’u Neden Kullanmalıyız?
Esra Koçak
Spring boot, Java programlama dilinde geliştirilen bir frameworktür. Java dilinde microservice yazılmasına olanak sağlar.
Peki MicroService nedir?
Çalışan programın ana işlemi üzerindeki yük bölünerek ayrı ayrı işlemlerde çalışmasına ve bu sayede daha performanslı servisler geliştirilebilmesine olanak tanıyan bir yazılım geliştirme mimarisidir. Birlikte çalışabilen, otonom/bağımsız olarak deploy edilebilen belli bir iş sorumluluğu yüklenmiş küçük iş servisleridir. Bu servisler bir biri ile network üzerinden konuşarak anlaşırlar ve bir çok avantajıda yanlarında getirirler. En büyük avantajlarından birisi bağımsız olarak deploy edilebilir olmalarıdır. Bununla birlikte bir çok farklı teknoloji ile birlikte çalışma fırsatı (technology agnostic) sunmaktadır. Özetle, tek bir işi gerçekleştirmekten sorumlu servislerdir, diyebiliriz.
Spring boot kullanarak daha az veritabanı kodu yazarak daha az vakit kaybı ile daha hızlı geliştirme yapabilirsiniz. Servis uçları için REST kullanımı sunar ve güçlü bir REST yapılandırmasına sahiptir. Birçok yapılandırma otomatik olarak yapılmış durumdadır.
Var olan anotasyonları kullanarak uygulama ve uygulama içi mimarilerde kolayca değişiklik yapabilirsiniz. Kendisine ait bir servlet container bulunur. Bu sayede, servis uçlarına gelen istekleri alır, işler ve ilgili komutlara yönlendirir.
Spring Boot Nasıl Çalışır?
Spring uygulamanızın çalışması için temel 3 tane anotasyon bulunmaktadır:
- @SpringBootApplication: Uygulamanın giriş metodunu belirtir.
- @EnableAutoConfiguration: Uygulama bağlılıkları (dependencies) içerisinde belirtilen yapılandırmaları otomatik olarak çalıştırır.
- @ComponentScan: Proje içerisinde tanımlanan bütün komponentleri tarar.
Spring Boot ve Dependency Injection
Öncelikle, Dependency Injection kavramı öğrenmeliyiz.
Dependency Injection
Uygulama geliştirirken bir sınıfa ait özelliği başka sınıfta kullanmak istediğimizde “new” anahtar kelimesini kullanırız ya da o bilgiyi nesneye atar, diğer sınıfa yönlendiririz. Bu şekilde nesnelerin birbirleriyle ilişkili olduğu durumlarda eğer bu durum iyi yönetilmezse ya da iyi tasarlanamazsa bu durum ileride büyük sorunlara yol açabilir.
Yaptığınız uygulamalar modüler ve geliştirmeye açık olmalıdır. Bunun için ise nesneler arası bağlar zayıf olmalıdır. Bir nesne veya sınıf üzerinde değişiklik yapıldığında sınıf ile ilişkili ya da o sınıfın nesnesini kullanan tüm diğer sınıflar ve modüller bu değişiklikten etkilenmemelidir. İşte tam bu noktada Dependency Injection kavramı devreye giriyor.
Dependency Injection, Inversion of Control (Ioc) teoreminin özelleştirilmiş ve en çok kullanılan kısmıdır. Özetle, bir sınıfı bağımlılıklarından bağımsız hale getiren bir programlama tekniğidir.
Spring Ioc ise container görevini üstlenir ve uygulamalarımız için Dependency Injection desenini uygulayan bir yapıdır. Spring bize iki farklı Dependency Injection özelliği tanımlamaktadır:
- Setter Injection: Metodlar üzerinden injection işlemi yapılmaktadır.
- Constructor Injection: Yapılandırıcı metod üzerinden bağımlılıklarımızı yönetiriz.
Böylece Spring bizden aldığı değerleri gerekli alanlara eşleştirerek yönetebilmeyi sağlamaktadır.
Peki Neden Kullanmalıyız?
Spring Boot’un oluşturulma amacı uygulama yapılandırılmasının karmaşıklığını gidermektir. Spring Boot kullanmanın bir çok artısı vardır:
- Geliştiriciler, Jetty, Tomcat gibi Gömülü HTTP sunucularına kolayca erişebilir ve web uygulamalarını zahmetsizce kolayca test edebilir.
- Kurulumu oldukça basittir.
- Birtakım derleme araçları vardır. Bunlardan en tanındık olanı MAVEN repository’dir. Bu tarz araçları kullanabilmek için bizlere bir plugin sağlar ve hızlı bir şekilde entegrasyon sürecini kendisi tamamlar.
- XML yapılandırmasına gerek yoktur.
- Otomatik yapılandırma gibi özelliklerle Spring Boot, sizi kodlama ve gereksiz yapılandırma zahmetinden kurtarır.
- Gömülü ve bellek içi veritabanlarıyla çok sorunsuz ve kolay bir şekilde çalışmayı sağlayan bir eklenti sağlar.
- Bizim için bir proje taslağı oluşturur ve herhangi bir konfigürasyon problemi yaşamadan projemizi ayağa kaldırabiliriz.
- Spring Boot kullanmanın birçok artısı vardır.
Esra Koçak
İnfina Yazılım A.Ş.
Jr. Yazılım Mühendisi