Spring Boot ve Spring Framework'te Convention over Configuration: Anlamı, Örnekler ve Özelleştirme

Spring Boot ve Spring Framework'de Convention over Configration ne anlama gelir?




Spring Boot ve Spring Framework, Java tabanlı uygulamaları geliştirmek için kullanılan iki popüler kütüphanedir. Her ikisi de "Convention over Configuration" (CoC) prensibini benimser. Bu prensip, yazılım geliştiricilerinin uygulamaları için karmaşık yapılandırmalar yapmak yerine, belirli standartlara uygun olarak geliştirme yapmalarını teşvik eder. Bu yaklaşım, geliştirme sürecini hızlandırır ve karmaşıklığı azaltır çünkü geliştiricilerin çoğu ayarı manuel olarak yapılandırmalarına gerek kalmaz.


Spring Framework ve Spring Boot'ta "Convention over Configuration" şu şekillerde kendini gösterir:


Varsayılan Ayarlar: Spring, birçok senaryo için mantıklı varsayılan değerler sağlar. Örneğin, bir veritabanı bağlantısı yapılandırırken, Spring Boot uygulamanızın bağlantı detaylarını otomatik olarak tespit edebilir ve bir veritabanına bağlanmak için gerekli olan varsayılan yapılandırmayı kullanır.


Annotasyon Tabanlı Yapılandırma: Spring, annotasyonlar aracılığıyla nesnelerin nasıl davranacağını belirlemeye olanak tanır. Bu, XML tabanlı yapılandırma dosyalarının kullanımını azaltır ve geliştirme sürecini hızlandırır. Örneğin, bir sınıfın bir REST kontrolörü olduğunu belirtmek için @RestController annotasyonu kullanılır.


Otomatik Yapılandırma: Spring Boot, sınıf yolu (classpath) taraması yaparak ve belirli kütüphanelerin varlığını kontrol ederek uygulamanız için otomatik yapılandırma sağlar. Bu, uygulamanıza eklenen bağımlılıklara dayanarak çalışma zamanı davranışını otomatik olarak ayarlar. Örneğin, Spring Data JPA kütüphanesi uygulamanızın sınıf yolunda bulunduğunda, Spring Boot otomatik olarak bir JPA veritabanı bağlantısı yapılandırır.


Mantıklı Varsayılan Paketleme Yapısı: Spring Boot, uygulamanızın yapılandırılmasında ve paketlenmesinde takip edilmesi gereken belirli bir dizin yapısı önerir. Bu yapı, uygulamanın kolayca paketlenmesine ve dağıtılmasına olanak tanır.


"Convention over Configuration" yaklaşımı, geliştiricilere, uygulamalarını daha hızlı bir şekilde geliştirebilmeleri için gereksiz yapılandırma iş yükünden kurtulma imkanı sunar. Bu, geliştiricilerin daha çok iş mantığına ve uygulamanın gerçek ihtiyaçlarına odaklanmalarını sağlar.



Örnek bir senaryo ve kod örneği ver


Spring Boot ile basit bir web uygulaması oluşturalım. Bu örnekte, "Convention over Configuration" yaklaşımının nasıl çalıştığını göreceğiz. Basit bir RESTful web servisi geliştireceğiz. Bu servis, HTTP GET isteği alacak ve "Hello, World!" mesajını dönecek.


Adım 1: Spring Initializr kullanarak bir Spring Boot projesi oluşturun


Spring Initializr (https://start.spring.io/) web sitesini kullanarak, aşağıdaki özelliklere sahip bir Spring Boot projesi oluşturun:


Project: Maven Project

Language: Java

Spring Boot: En son sürümü seçin

Project Metadata:

Group: com.example

Artifact: demo

Name: demo

Description: Demo project for Spring Boot

Package name: com.example.demo

Packaging: Jar

Java: 11 veya üzeri bir sürüm

Dependencies: Spring Web

Adım 2: Uygulama kodunu yazın


Projenizi IDE'nize (Örneğin, IntelliJ IDEA, Eclipse vb.) aktardıktan sonra, src/main/java/com/example/demo dizininde bir DemoApplication.java dosyası bulacaksınız. Bu, Spring Boot uygulamanızın giriş noktasıdır.


Şimdi, bir REST kontrolörü ekleyeceğiz. Bu kontrolör, bir HTTP GET isteği alacak ve bir yanıt dönecek. Yeni bir Java dosyası oluşturun ve aşağıdaki gibi kodlayın:


src/main/java/com/example/demo/HelloController.java


java

Copy code

package com.example.demo;


import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;


@RestController

public class HelloController {


    @GetMapping("/hello")

    public String sayHello() {

        return "Hello, World!";

    }

}

Bu kod, "Convention over Configuration" yaklaşımını mükemmel bir şekilde sergiler:


@RestController annotasyonu, Spring'e bu sınıfın bir REST kontrolörü olduğunu söyler. Bu, Spring'in otomatik olarak bu sınıfı bir bean olarak tanımlaması ve HTTP isteklerini yönetmesi anlamına gelir.

@GetMapping("/hello") annotasyonu, bu metodun /hello yoluyla gelen GET isteklerine yanıt verdiğini belirtir.

Adım 3: Uygulamayı çalıştırın


Uygulamanızı çalıştırın. Spring Boot, uygulamanız için bir gömülü Tomcat sunucusu başlatır ve 8080 portunda dinler.


Tarayıcınıza gidip http://localhost:8080/hello adresine gidin. "Hello, World!" mesajını görmelisiniz.


Bu örnekte, çok az yapılandırma ile çalışan bir web servisi oluşturduk. Spring Boot'un otomatik yapılandırma özellikleri sayesinde, bir web sunucusu başlatmak, uygulamayı paketlemek ve REST endpoint'leri oluşturmak için ekstra yapılandırma dosyaları yazmamız gerekmedi. Bu, "Convention over Configuration" prensibinin güçlü bir örneğidir.


Eklediğim bir bağımlılık convention over configration sağlar mı?



Evet, Spring Boot'ta eklediğiniz bağımlılıklar "Convention over Configuration" (CoC) prensibini destekleyerek otomatik yapılandırma sağlayabilir. Spring Boot, projenize eklediğiniz bağımlılıkları algılayarak uygun otomatik yapılandırmaları gerçekleştirir. Bu, geliştiricilerin uygulamalarını daha hızlı ve daha az yapılandırma ile geliştirmelerine olanak tanır.


Nasıl Çalışır?

Spring Boot'un Auto-Configuration mekanizması, spring-boot-autoconfigure paketinde bulunur. Bu paket, classpath'teki kütüphanelere göre uygulamanız için otomatik yapılandırmalar sağlar. Örneğin, projenize Spring Data JPA'yı eklerseniz, Spring Boot, bir veritabanı bağlantısı oluşturmak ve JPA repositorilerini yönetmek için gereken bean'leri otomatik olarak yapılandırabilir.


Örnek Senaryo

Projenize Spring Web bağımlılığını eklediğinizi düşünelim:


xml

Copy code

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

</dependency>

Bu bağımlılık, RESTful uygulamalar geliştirmek için gerekli olan Spring MVC ve gömülü Tomcat sunucusu gibi bağımlılıkları içerir. Spring Boot, bu bağımlılığı classpath'te algıladığında, bir web uygulaması oluşturmak için gereken yapılandırmaları otomatik olarak gerçekleştirir. Bu, aşağıdaki gibi birkaç özelliği içerir:


Gömülü bir web sunucusu (Tomcat, Jetty veya Undertow) otomatik olarak yapılandırılır ve başlatılır.

Spring MVC otomatik olarak etkinleştirilir ve HTTP isteklerini yönlendirmek için gereken bean'ler yapılandırılır.

Statik kaynaklar ve view şablonları için varsayılan yapılandırmalar etkinleştirilir.

Bu özellikler, geliştiricinin manuel olarak her birini ayarlaması gerektiği durumları ortadan kaldırır ve böylece "Convention over Configuration" prensibine uygun bir geliştirme deneyimi sağlar.


Sonuç

Bu şekilde, Spring Boot, eklenen bağımlılıklar temelinde uygulamanız için uygun otomatik yapılandırmalar sağlayarak CoC prensibini destekler. Bu, geliştirme sürecini hızlandırır ve geliştiricilerin daha fazla zamanını iş mantığına ve uygulamanın diğer önemli yönlerine ayırmalarına olanak tanır.


COC'u override edebilir miyim?


Evet, Spring Boot'ta "Convention over Configuration" (CoC) prensibini takip ederken, varsayılan otomatik yapılandırmaları override (geçersiz kılmak) mümkündür. Bu, Spring Boot'un esnekliğinin önemli bir parçasıdır ve geliştiricilere, uygulamalarının özel ihtiyaçlarını karşılamak için gerektiğinde daha fazla kontrol sağlar.


Yapılandırma Özellikleri Aracılığıyla Override Etme

Spring Boot, application.properties veya application.yml dosyaları aracılığıyla uygulama yapılandırmasını özelleştirmenize olanak tanır. Bu dosyalar, Spring Boot'un otomatik yapılandırmasını özelleştirmek için kullanılabilir. Örneğin, gömülü web sunucusunun çalışma portunu değiştirmek istiyorsanız, application.properties dosyanıza aşağıdaki gibi bir yapılandırma ekleyebilirsiniz:


Copy code

server.port=8081

Bu yapılandırma, uygulamanın 8080 yerine 8081 portunda çalışmasını sağlar.


Java Yapılandırması Aracılığıyla Override Etme

Spring Boot, Java tabanlı yapılandırma sınıfları kullanarak da otomatik yapılandırmayı geçersiz kılmanıza olanak tanır. Örneğin, otomatik yapılandırılmış bir bean'i özelleştirmek istiyorsanız, kendi @Bean tanımınızı yapılandırma sınıfınıza ekleyebilirsiniz:


java

Copy code

@Configuration

public class MyConfiguration {


    @Bean

    public SomeBean someBean() {

        // Özelleştirilmiş bean yapılandırmanız

        return new SomeBean();

    }

}

Spring Boot, aynı türdeki bir bean'i bulduğunda, sizin tarafınızdan tanımlananı otomatik yapılandırılmış olanın üzerine yazar.


Öncelik Sırası

Spring Boot'ta, yapılandırma önceliği belirli bir sıraya göre işler. Örneğin, bir yapılandırma özelliği hem application.properties dosyasında hem de bir yapılandırma sınıfında tanımlanmışsa, Java yapılandırması özellik dosyasındaki yapılandırmaya göre önceliklidir. Bu, geliştiricilere, uygulamanın farklı katmanlarında yapılandırmaları hassas bir şekilde yönetme yeteneği verir.


Sonuç

Bu esneklik, Spring Boot'u hem basit uygulamalar için uygun bir seçim yapar hem de karmaşık ve özelleştirilmiş uygulama gereksinimlerini karşılayabilecek bir platform haline getirir. Bu nedenle, Spring Boot'ta CoC yaklaşımını takip etmek, uygulamanızın geliştirme sürecini hızlandırırken, gerektiğinde detaylı yapılandırma seçenekleri sunar.








Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال