Kategoriler
Spring Boot

Spring Boot Mimarisi

3. Bölüm: Günümüzde, kurumsal uygulamalar web tabanlıdır. Mimari olarak -çok katmanlı mimari altyapısı ile- mikroservis mimarisine sahiptirler. Spring Boot, genellikle mikroservis geliştirmeleri için kullanılır ama monolith geliştirmeler için de kullanmak mümkündür.

3. Bölüm: Günümüzde, kurumsal uygulamalar web tabanlıdır. Mimari olarak -çok katmanlı mimari altyapısı ile- mikroservis mimarisine sahiptirler. Spring Boot, genellikle mikroservis geliştirmeleri için kullanılır ama monolith geliştirmeler için de kullanmak mümkündür.

Spring Web, MVC ve REST APİ için Spring Data ise JPA/Hibernate ile veritabanı işlemleri için kullanılır. Bir web uygulaması için bu -çok katmanlı- mimari uygulanır.

Bu katmanların her biri belirli görevlere sahiptir ve her katmanda uygulamanın ihtiyaçlarına göre farklı bileşenler ve iş bölümleri bulunmaktadır. Yukarıdaki görselde gördüğünüz gibi…

Ö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 anotasyonlar 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 anotasyonu 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, parola vs. gibi özel parametrelerin dışarıdan erişimini kapatmak için kullanılır. Genelde domain’in altında yer alır.
  • Repository (DAO) katmanı: @Repository anotasyonu 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 anotasyonu 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 anotasyonu, REST 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ı oluştururken 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 mikroservis 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.

Bir Cevap Yazın