Herkese merhabalar, bu yazımızda sizlerle Java programlama dilinde geliştirilen açık kaynak kodlu SpringBoot hakkında konuşacağız ve temel kavramlarına değineceğiz.
Hadi başlayalım
İlk olarak bilmemiz gereken Springboot ile daha performanslı ve etkili microservisler geliştirebilmekteyiz.
Micro Service Nedir?
Micro servisler ise her bir servis işleminin ayrı bir process üzerinde çalışmasıdır. Bu sayede ç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.
Springboot nedir?
Springboot Java programlama dilinde geliştirilen ve Java dilinde güçlü MicroService yazılmasına olanak tanıyan bir frameworktür. Springboot sayesinde backend uygulama geliştirirken veritabanı işlemlerimizi Java ile Language Integrated olarak yazabiliriz ve Springboot tarafından bu işlemler gerçekleştirilir. Aynı zamanda client tarafındaki uygulamalar içinde servis uçları sağlayarak veri girdi-çıktısı oluşturabiliriz.
Springboot ile
Daha az veritabanı kodu yazarak daha az vakit kaybı ile daha hızlı geliştirme yapabiliriz.
Springboot mimarisini anlamak daha kolaydır. Bu sayede daha verimli uygulamalar geliştirilebilmektedir.
Java programlama dili ile Language Integrated veritabanı komutları yazabilmekteyiz.
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. İstediğiniz takdirde değiştirebilirsiniz.
Anotasyonlar kullanarak uygulama ve uygulama içi mimari değişiklikler yapılabilmektedir.
Kendisine ait bir servlet container bulunur. Bu sayede servis uçlarına gelen istekleri alır işler ve ilgili komutlara yönlendirir.
Java Bean yönetimi kolaydır. Aynı zamanda istenilen veritabanı yönetimine uygun olarak çalışır..
Springboot nasıl çalışır?
Bir SpringBoot uygulamasının çalışması için 3 temel anotasyon bulunmaktadır :
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
@SpringBootApplication anotasyonu uygulamanın giriş metodunu belirtir. Yani halk arasındaki tabir ile main fonksiyondur. Uygulama bu metod ile başlar.
@EnableAutoConfiguration anotasyonu ile uygulama bağlılıkları (dependencies) içerisinde belirtilen yapılandırmaları otomatik olarak çalıştırır. Örnek olarak veritabanı ayarlamasını yapar, REST yapılandırmasını hazırlar ve gerekli olan herşey uygulama için hazır hale gelir.
@ComponentScan anotasyonu ise proje içerisinde tanımlanan bütün komponentleri tarar. Bu sayede modeller, repositoryler servisler, controllerlar vs. hepsi kullanıma hazır hale getirilir.
SpringBoot uygulaması nasıl başlatılır?
Springboot uygulaması başlatmak için dependency içerisinde tanımlanan starter apileri kullanılır. Her bir işlem tipi springboot tarafından dependencies içerisinden starter tanımlanır. Bu apiler geliştiricilerin işlerini kolaylaştırmak için tasarlanmıştır.
Aşağıda bazı starter apilerin ne işe yaradıkları gösterilmiştir :
spring-boot-starter-data-jpa : Veritabanı işlemleri için kullanılır
spring-boot-starter-actuator : Springboot uygulamasının yönetimi için kullanılır.
spring-boot-starter-security : Springboot uygulamasının servis uçlarına erişimin güvenliğini yönetmek için kullanılır.
spring-boot-starter-web : Springboot kullanılarak REST servis uçları geliştirmek için kullanılır
spring-boot-starter-thymeleaf : Springboot ile web uygulaması geliştirmek için kullanılır
spring-boot-starter-test : Springboot için test kontrolleri yazmak için kullanılır.
Aşağıda bir starter apinin dependencies içerisine nasıl eklendiği gösterilmiştir:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency> 
Sprinboot uygulama katmanlarınndan bahsedelim
Genel olarak temel bir springboot uygulamasında aşağıdaki işlem katmanları bulunur. Düzenli geliştirme yapabilmek adına işlemlerin ilgili katmandan yapılması önemlidir. Aksi hale büyük projelerde karmaşıklıklar oluşma ihtimali yüksektir.
Model Katmanı : Model katmanında veritabanı tablolarımızın modelleri hazırlanır ve yapılandırmalar belirlenir.
Repository katmanı : Uygulamanın veritabanı ile kuracağı iletişim Repository katmanı üzerinden sağlanır.
Service Katmanı : Uygulamanın gerçekleştireceği özel işlemler ve kontroller servis katmanında belirlenir.
Controller Katmanı : Oluşturulan REST servis uçları controller katmanı tarafından belirlenir ve servis ile iletişim controllerlar üzerinnden kurulur.
Aşağıdaki görselde örnek springboot katmanlarının arasındaki ilişki diagramı gösterilmiştir.
Model Katmanı
Springboot uygulamalarında Model oluşturmak için, normal bir Java sınıfı oluşturulur ve içerisine kolonların adları eklenir. Bu esnada kolonların veritipleri, uzunlukları gibi ayarlamalarda anotasyonlar kullanılarak belirlenir. Bu sınıf bir Entity temsil edeceği için sınıfın kendisi @Entity anotasyonu ile bildirilir. Aynı zamanda getter ve setterlar ile birlikte constructorlar belirlenmelidir. Bu sayede ek model kontrolleri yapılabilir.
Repository katmanı
Repository katmanı JPARepository sınıfından kalıtım alan bir interface şeklinde yazılır. Repository katmanı, içerisinde veritabanı işlemlerini direk olarak belirtmemize olanak tanır. Bu sayede SQL kodu yazmadan sadece metod isimlerini yazarız ve derlenme aşamasında, ilgili sorgular otomatik olarak oluşturulur. Eğer yazmak istediğimiz komutlar JPA sınıfının anlamlandıramayacağı kadar karmaşık komutlar ise ilgili komuta gerekli SQL sorgusu @Query anotasyonu ile bildirilir ve metod çağrıldığında belirtilen sorgu çalıştırılır. Repository katmanının bu fonksiyonelliği bize geliştirme esnasında ciddi derecede vakit kazandırmış olur.
Service Katmanı
Servis katmanı ara bir katmandır ve gerekli operasyonlar burada geliştirilir. Service katmanında Controller'dan gelen veri işlenir ve gerekli kontroller yapılır, uygunsa veritabanına kaydedilir değise geri cevap oluşturulur ve controller katmanına gönderilir. Yani Controller ve Repository katmanları arasında bir güvenlik katmanı diyebiliriz. Diğer servisler ile iletişim kurularak onlarla veri alışverişi sağlanır. Bir Java sınıfının service katmanı olduğunu belirtmek için sınıf üzerinde @Service anotasyonu kullanılır. Bu sayede Springboot tarafından o sınıf service olarak tanımlanır ve o şekilde derlenir.
Controller Katmanı
Controller katmanı uygulamamızın dışarıya açılan kapısınıdr. Uygulamamız burada REST apileri belirler ve dışarıdan, belirlenen apilere gelen verileri ilgili işlemlerden geçirerek istemciye cevap döndürür. Tanımlanan REST servis uçları Springboot tarafından mapping yapılır. Servlet gelen istekleri, ilgili metodlara bu mapping aracılığı ile yönlendirir. Bu sayede Springboot uygulamamız dışarıısı ile iletişim kurmuş olur.
Buraya kadar Springboot temelde ne işe yarar ve temelde nasıl çalışır görmüş olduk.
Bu yazımızda buraya kadar.
Burak Hamdi TUFAN
Tags
Web Java restful service web servis OOP Springboot
Share this Post
Facebook
LinkedIn
Twitter
Send with Whatsapp
Print This Page
Author
Burak Hamdi TUFAN
I am a software developer experienced 12 years and here to share all my programming experiences. I have worked on so many platforms and programming languages especially C, C#, C++ and Java. I am studing PhD at Kocaeli University on Aviation Technologies. I am building softwares and technologies on aviation.
Facebook Twitter Instagram LinkedIn Youtube
FROM : Web
28/01/2016
PHP ile CURL Kullanımı
14/11/2019
How to Use CURL with PHP
18/05/2020
How to use Timer events in JavaScript
Post a Comment
Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.
Full Name
Email Address (Will be hidden)
Comment
Comments
There is no comment. Be the owner of first comment...
1.3K
17/05/2021
Social Media:
Facebook Twitter Instagram Youtube LinkedIn
Categories:
General Programming
Content Count : 105
Mobile
Content Count : 32
Web
Content Count : 35
Electronic
Content Count : 36
Informational
Content Count : 41
Last Posts:
Explanation of async and await in Javascript
Web
QT C++ ile JSON Veri İşleme
General Programming
STM32 StdPeriph ile ODR ve IDR Register Kullanımı
Electronic
Explanation of Promise in JavaScript
Web
How to Use Java Streams
General Programming
Random Tags
TreeMap Theme drop kali Foreground process builder
Total Daily Views : 813
About the Blog
ABOUT THE AUTHOR
My Name is Burak Hamdi TUFAN. I have graduated From Kocaeli University / Turkey. I have studied on Aircraft Avionics. Now I am studing PhD on Aviation Technologies.
I am also a software developer. I love researching and developing somethings. I am developing softwares almost for 12 years. I can develope softwares with QT C++, C#, Java,React Native, Visual Basic, ASP.NET, PHP, Javascript, CSS, C, Arduino, SQL, Android. So I am only 25 years old but I have so much experiences about computer technologies.