#3 Spring Nedir ? Spring Boot ve Spring Framework Neden Kullanılır?

Ubeyde Akgül
Huawei Developers - Türkiye

--

Serinin birinci yazısında, genel olarak Spring nedir , Spring’in avantajları nelerdir, neden Spring kullanılır gibi başlıklara değinmiştim.

Serinin ikinci yazısında, SpringProjects ile sağlanan populer Spring Framework modullerinden ve içerdiklerinden bahsetmiştim.

Bu yazımda; SpringProjects ile sağlanan diğer Spring Framework modullerinden ve içerdiklerinden basedicem.

Spring for Android, Spring CredHub, Spring Flo, Spring for Apache Kafka, Spring LDAP, Spring Mobile, Spring Roo, Spring Shell, Spring Statemachine, Spring Vault, Spring Web Flow, Spring Web Services

spring framework ecosystem

Spring Projects — Spring Features

Yapılandırmadan güvenliğe, web uygulamalarından büyük verilere kadar uygulamanızın altyapı gereksinimleri ne olursa olsun, istediğinizi oluşturmanıza yardımcı olacak bir Spring projesi illaki var. Spring’in sağladığı tüm altyapı ve projelere SpringPojects üzerinden ulaşabilirsiniz.

Spring Initializr (start.spring.io) ile saniyeler içinde istediğiniz atlapıya sahip yeni ve hazır bir Spring projesine başlayabilirsiniz.

Spring For Android :

Android uygulamalarının geliştirilmesinde kullanılmak üzere temel Spring bileşenlerini sağlar.

  • Android için Rest Client
  • Güvenli API’lere erişim için kimlik doğrulama desteği
CredHub and Secure Credential Management

CredHub : 👻

Cloud Foundry platformunda çalışan bir CredHub sunucusundaki kimlik bilgilerini depolamak, almak ve silmek için client-side desteği sağlar. Güvenli bir şekilde kimlik bilgisi üretimini, depolamayı, yaşam döngüsü yönetimini ve erişimi merkezileştirir ve güvence altına alabileceğimiz CredHub API için bir bağlantı sağlayarak Spring uygulamalarını CredHub ile entegre etmeyi kolaylaştırır.

CredHub, Ops Manager’da merkezi kimlik bilgisi yönetimi için tasarlanmış ve ekosistemindeki çeşitli senaryoları ele alabilen bir bileşen. CredHub, kimlik bilgisi oluşturma, depolama, yaşam döngüsü yönetimi ve erişimi merkezileştirir ve korur.

spring flo

Spring Flo :

Pipeline’lar ve basit grafikler için gömülebilir basit HTML5 görsel oluşturucu sunan JavaScript kitaplığıdır. Spring Cloud Data Flow’daki stream builder’ın temeli olarak kullanılır.

  • Grafiksel canvas ve/veya DSL (domain-specific language) kullanarak pipeline akışlarını yeniden oluşturma, yönetme, monitör erme
  • DSL aracılığıyla Pipeline’lar oluşturma ( with content-assist and auto-complete)
  • Distributed deployment içindeki modüllerin görsel sunumları
  • Pipeline’ların daha kolay ve verimli organizasyonu için GUI’deki auto-adjustment ve grid-layout yetenekleri
Streaming Spring Boot Logs to Apache Kafka
Synchronous Kafka: Using Spring Request-Reply

Spring for Apache Kafka :

Spring-kafka projesi, core Spring kavramlarını, Kafka-based mesajlaşma çözümlerinin geliştirilmesine uygular. Mesaj göndermek için high-level abstraction olarak bir template sağlarken, aynı zamanda @KafkaListener anotasyonları ve bir listener container ile Message-driven POJO’lar için destek sağlar.

  • KafkaTemplate
  • KafkaMessageListenerContainer
  • @KafkaListener
  • KafkaTransactionManager
  • Gömülü kafka sunuculu spring-kafka-test jar
Confluent — Spring for Apache Kafka
spring security for LDAP authentication.

Spring LDAP :

Spring Jdbc ile aynı prensipler üzerine inşa edilmiş, Java ile LDAP programlamayı basitleştirme sağlayan kütüphanedir. Spring’in template-based yaklaşımını kullanarak LDAP kullanan uygulamaların geliştirilmesini kolaylaştırır.

LdapTemplate sınıfı, oluşturma, NamingEnumerations aracılığıyla creating, looping işlemleri, exception handling ve kaynakları temizleme gibi geleneksel LDAP programlamayla ilgili tüm tesisat işlerini kapsar. Adlandırma Sayımları oluşturma, döngüleme, İstisnaları işleme ve kaynakları temizleme.

baeldung — spring-mobile

Spring Mobile :

Spring web sitenize talepte bulunan kullanıcının cihaz türünü tespit eden, cihaza göre alternatif görünümler sunan, kullanıcının istediği görünümü tercih etmesine olanak vererek normal, mobil veya tablet görünümü ayarlamayı sağlayan frameworktür.

Spring Roo :

Java geliştiricileri için dakikalar içinde hızlı ve kolay bir şekilde java uygulaması oluşturmayı sağlayan yeni nesil hızlı uygulama geliştirme aracı.

  • Hızlı sonuç
  • Kullanımı kolay
  • %100 Java geliştirme
  • Hızlı ve çıkarması basit
  • Aktif, yardımsever topluluk
  • Eklentiler
Spring Shell Sample application

Spring Shell :

CLI-based (Command-line interface) uygulamaların kaynak keşfi ve etkileşimi ile tam özellikli shell ( command line) uygulamaları yazmayı kolaylaştırır. REST API ile etkileşim veya yerel dosya içeriğiyle çalışmak gibi komut satırı uygulamaları için kullanabilirsiniz.

Spring Statemachine

Spring Statemachine :

Geliştiricilerin state machine (Durum makinesi) konseptlerini Spring uygulamalarıyla kullanmalarını sağlar. StateMachine sonlu sayıda durumdan oluşan bir davranış modelidir ve mevcut duruma ve belirli bir girdiye bağlı olarak, makine durum geçişleri gerçekleştirerek çıktılar üretir.

  • Tek seviyeli state machine
  • Hiyerarşik state machine yapısı
  • Triggers, transitions, guards, actions kullanımları.
  • Makine yapılandırmasını kalıcı şekilde depolama
HarshiCorpLearn

Spring Vault : 🤝

Gizli bilgilere erişim ve gili bilgilerle yapılacak tüm işlemler için HashiCorp Vault entegrasyonu ve Spring abstraction’ları ve client-side desteği sağlar.

Vault ile; UI, CLI veya HTTP API kullanarak hassas verileri korumak için token, password, certificate, encryption key erişimlerini güvenli hale getirir, depolar ve yönetebilirsiniz.

HarshiCorpLearn
How Vault Works

Spring Web Flow :

Bir uçuş için check-in yapmak, alışveriş sepeti ödem, kredi başvurusunda bulunmak gibi kontrollü gezinme (controlled navigation) özelliğine sahip durum bilgisi olan web uygulamaları oluşturmayı sağlar.

Spring Web Flow’un sağladığı gibi , kontrollü gezinme sayfalarındaki flow süreci şu şekilde olmalı :

  • Net bir başlangıç ​​ve bitiş noktası olmalı
  • Kullanıcı belirli bir sırayla bir dizi ekrandan geçmeli
  • Değişiklikler son adıma kadar sonuçlandırılmamalı
  • Flow tamamlandıktan sonra yanlışlıkla bir işlemi tekrarlamak mümkün olmamalı ve net bir başlangıç ​​ve bitiş noktası olmalıdır.
Architecture of Spring Web services

Spring Web Services : 👍🏻

Spring-WS, contract-first SOAP web servisler geliştirmeye odaklanır ve bu işlemi oldukça kolaylaştırır. Spring-MVC’nin mimarisine benzer.

Contract-First , WS-I basic profile (Birlikte Çalışabilir Hizmetler) uyumlu geliştirmeler gibi en iyi uygulamayı en kolay şekilde geliştirme sağlar.

Contract-First yaklaşımını kullanırken, WSDL(Web Services Description Language) contract ile geliştirmeye başlarsınız ve sonrasında java tarafında implement ederek kullanırsınız.

  • Güçlü mapping : Gelen XML request’i; mesaj yüküne, XPath expression veya SOAP Action header ifadesine bağlı olarak herhangi bir nesneye dağıtabilirsiniz.
  • XML API desteği : Gelen XML mesajları DOM, JDOM, dom4j, XOM, SAX ve StAX gibi standart JAXP API’lerinde işleneyebilirsiniz.
  • Object/XML Mapping modülü: JAXB 1 ve 2, Castor, XMLBeans, JiBX ve XStream’i destekler.
  • SOAP mesajları üzerinde encrypt ve decrypt işlemleri yapmanıza veya bunlara karşı kimlik doğrulamanıza izin verir.
  • Acegi Security ve Spring Security ile entegrasyonu ile mevcut konfigürasyonlarınızı SOAP servisiniz için de kullanabilirsiniz.

--

--