Spring Boot Mimarisi

0
32
Spring Boot Mimarisi
Spring Boot Mimarisi

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 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 proje uygulaması oluştururken bu mimariyi daha detaylı anlatmaya çalışacağım.‌

Her bir 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 şeylerden biridir. Başlangıçta paketlerin yapısına fazla dikkat etmezsiniz. 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şlarsını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ıflarımızdır ve bütün veritabanı işlemleri bunlar üzerinden yapılır. Dto: Servis ve sunum katmanının direk veritabanına ulaşmasını engellemek ve ve kullanıcı şifresi gibi bazı parametreleri dışarıya açmamak 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, Rest API uygulamasında ise @RestConroller anotasyonu ile oluşturulan bu sınıflar; verilerimizi frontend ve tarayıcı üzerinden kullanabilmemizi sağlar.
  • Util, configuration, log vs: Eklemek istediğiniz diğer şeyler için isteğe bağlı olarak, istediğiniz kadar komponent oluşturabilirsiniz.

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 Cevap Yazın