3. Spring Boot – Mimari

-

3. Bölüm: Günümüzde, kurumsal uygulamalar genellikle web tabanlıdır. Mimari olarak da genelde çok katmanlı mimariye veya mikro servis mimarisine sahiptirler. Spring Boot genellikle Microservice için kullanılır ama Monolithic geliştirmeler için de kullanmak mümkündür.

Spring Web (MVC ve REST APİ için) ve Spring Data (JPA/Hibernate – Veritabanı işlemleri için) ile oluşturulan, temel bir web uygulaması için bu mimari kullanılır.

Bu katmanların her biri belirli görevlere sahiptir ve her bir katmanda uygulamanın ihtiyaçlarına göre farklı servisler ve bileşenler görev yapmaktadır. 

Örnek uygulama oluştururken bu mimariyi daha detaylı anlatmaya çalışacağım.‌

Her katman, bir paket(package) altındadır ve yukarıdaki mimariye uygun şekilde, sınıfların üzerinde gerekli annotasyonlar kullanılarak, aşağıdaki gibi oluşturulur.‌

Proje Mimarisi

Paket(package), Java’da temel kavramlardan ve ilk göze çarpan konulardan biridir. Başlangıçta paketlerin yapısına fazla dikkat etmeyiz. Fakat ilerleyen zamanlarda karmaşayı önlemek ve proje mimarisini anlaşılır hale getirmek için en pratik(best praktice) yöntemleri araştırmaya başlarız. ‌

Bu noktada Spring Boot’un sunduğu standart mimariye, paket yapısına ve kullanılacak bileşenlere göre aşağıdaki yapıya benzer bir mimari katmanı oluşturulur:

  • Domain katmanı: @Entity annotasyonu ile oluşturulan POJO sınıflarıdır. Bu sınıflar, ORM işlemleri için tablolara karşılık gelen sınıflardır. Bütün veritabanı işlemleri bu sınıflar üzerinden yapılır. Dto: Servis ve sunum katmanının direk veritabanına ulaşmasını engellemek ve parola vs. gibi bazı özel parametreleri dışarıdan erişime kapatmak için kullanılır. Genelde domain’in altında yer alır.
  • Repository (DAO) katmanı: @Repository annotasyonu ile oluşturulan ve Spring Boot tarafından CRUD işlemleri alt yapısı ile hazır olarak gelen bir arayüz(interface)dür.
  • Service (iş) katmanı: @Service annotasyonu ile oluşturulur. Repositoryden aldığı CRUD işlemleri altyapısını kullanarak, üzerinde mantıksal işlemler yaptığımız sınıftır.
  • Controller (sunum) katmanı: Klasik bir MVC uygulamasında @Controller annotasyonu, Restful API uygulamasında ise @RestConroller anotasyonu ile oluşturulan bu sınıflar; verilerimizi frontend ve tarayıcı üzerinden kullanabilmemizi sağlarlar.
  • Util, configuration, log vs: Eklemek istediğimiz diğer şeyler için isteğe bağlı olarak, istediğimiz kadar komponent oluşturabilirsiniz.

Konunun detayına, katmanları yazarken biraz daha detaylı değineceğiz.

Aşağıda gördüğünüz klasör/paket(package) yapısı, uygulamayı gerekli katmanlara ayıran ve mikro servis mimarisinde de kullanılan en yaygın best practice mimari yapısıdır

 src/main/java
    +- com
        +- example
                +- domain (Model(Entity) katmanı)
                |   +- Test.java
                +- repostory (DAO katmanı)
                |   +- TestRepository.java
                +- dto (Model erişim kısıt ve yönetim katmanı)
                |   +- TestDto.java
                +- service (İş(Business) katmanı)
                |   +- TestService.java
                +- controller (Sunum Katmanı)
                |   +- TestController.java
                +- configuration (Ayarlar)
                |   +- ApplicationConfiguration.java
                +- util (Oluşturacağınız komponentler)
                |   +- ApplicationUtils.java
            +- TestApplication.java

Bir sonraki bölümde projemizi oluşturacak, örnek bir uygulama yaparak devam edeceğiz.

Share this article

Recent posts

9. Spring Boot – Yayına Alımı

9. Bölüm: Bu bölümde uygulamayı derlemeyi ve yayına inceleyeceğiz. Bu bölüm, bu serinin son yazısıdır. Faydalı olması dileği ile.. Başarılar dilerim.

8. Spring Boot – Swagger Kullanımı

8. Bölüm: Bu bölümde Swagger kullanımını, RESTful API için doküman oluşturmayı ve Swagger üzerinden CRUD işlemleri yapmayı göreceğiz.

7. Spring Boot – Postman İşlemleri

7. Bölüm: Bu bölümde hazırladığımız uygulamayı test etmek için Postmanla CRUD işlemleri yapacağız. Postman, milyonlarca...

6. Spring Boot – CRUD Örneği

6. Bölüm: Bu bölümde, Spring Web ve Spring Data ile RESTful Webservisi üzerinden, CRUD (Ekleme, Okuma, Güncelleme, Silme) işlemleri yapacağız.

5. Spring Boot – Konfigürasyonlar

5. Bölüm: Bu bölümde, oluşturduğumuz örnek uygulama için gerekli olan; port, veritabanı, log vb. temel konfigürasyonları yapacağız. CRUD işlemleri yapacağımız bir sonraki...

Popular categories

Bir Cevap Yazın

Recent comments