
Spring Boot eğitimimizin ana hedefini ve eğitim boyunca işleyeceğimiz konuları ve elde edeceğimiz kazanımları konuşacağız.
Spring Boot nedir ve nasıl ortaya çıkmıştır?, Spring Boot’un Spring ekosistemindeki yeri neresidir?, Spring ile Spring Boot arasında nasıl bir ilişki vardır? gibi sorulara cevaplar bulacağız.
Spring Boot’un üzerine bina edildiği temel prensipleri ve bu prensiplerin etrafında sahip olduğu temel kabiliyetleri öğreneceğiz.
Spring Boot eğitimi boyunca kullanılacak olan Java Development Kit 8 ve Spring Tool Suite 3.9.4 IDE araçlarının kurulumu ve temel ayarlarıüzerinde duracağız.
Spring Boot eğitimi boyunca kullanılacak olan Java Development Kit 8 ve Spring Tool Suite 3.9.4 IDE araçlarının kurulum ve konfigürasyonunu gerçekleştireceğiz.
Genel olarak Spring Boot Framework ile çalışırken kullanılabilecek build araçlarından kısaca bahsettikten sonra Maven build ve dependency management aracının Spring Boot ile çalışırken nasıl kullanılacağını öğreneceğiz. Bunun yanı sıra Maven ile çalışırken kullanılan standlone ve web uygulamalarının dizin yapıları üzerinde duracağız.
Eğitim boyunca lab çalışmalarını yapacağımız PetClinic Java projesini Maven kullarak oluşturacağız ve projenin pom.xml'inde Spring Boot Framework ile çalışabilmek için gerekli ayarları gerçekleştireceğiz.
Spring Boot Starter’larının ne olduğunu, ne işe yaradıklarını ve proje içerisinde nasıl kullanıldıklarını öğreneceğiz.
PetClinic projesine web starter'ını ekleyerek Spring Boot'un Web MVC kabiliyetlerini devreye alacağız.
Spring Boot’un hemen her Java uygulamasında ihtiyaç duyulan temel yönetim ve monitör kabiliyetlerini sunduğu actuator modülünü ve özelliklerini inceleyeceğiz.
Spring Boot’un, yazılım geliştirme sürecini daha kolay ve akıcı hale getirmek için sunduğu kabiliyetleri ve bunların nasıl devreye alınacağını öğreneceğiz.
Spring Boot'un Dev Tools kabiliyetini PetClinic projesinde devreye alacağız.
Bir Spring Boot projesindeki temel anotasyonların neler olduğunu ve ne işe yaradıklarını öğreneceğiz.
PetClinic projesinde bir SpringBootApplication sınıfı oluşturup çalışır hale getireceğiz.
Maven kullanarak PetClinic projesinin executable JAR dosyasını elde edeceğiz ve PetClinic uygulamasını IDE dışında, komut satırından çalıştıracağız.
Spring Boot'un, geliştirdiğimiz uygulamaları farklı ortamlarda farklı konfigürasyon ayarları ile kolay ve uygulama içerisinde herhangi bir değişiklik yapmadan çalıştırmamızı sağlayan özelliklerini tanıyacağız.
PetClinic projesinin konfigürasyon ayarlarını yönetmek için application.properties dosyası ekleyeceğiz.
DEV ortamına özgü konfigürasyon ayarlarını yönetmek için application-dev.properties dosyası ekleyeceğiz.
Spring Boot'un hiyerarşik konfigürasyon property tanımları ile kolay biçimde çalışabilmek için desteklediği YAML konfigürasyon dosya formatından ve özelliklerinden bahsedeceğiz.
Konfigürasyon property tanımlarının Java sınıfları ile tip güvenli biçimde nasıl yüklendiklerini ve uygulama içindeki diğer sınıflardan erişilebildiklerini öğreneceğiz.
PetClinic projesi içerisinde konfigürasyon property'lerine tip güvenli biçimde nasıl erişileceğini örnekleyeceğiz.
Spring Boot'un desteklediği log kütüphanelerini ve loglama ile ilgili sunduğu kabiliyetleri, uygulama çalışırken ürettiği log mesajlarının düzeyini, formatını ve çıktı lokasyonlarını nasıl yönetebileceğimizi öğreneceğiz.
PetClinic projesi içerisinde log ayarlarını çalışma zamanında değiştirmenin yanı sıra, logları bir log dosyasına yazdırmayı da gerçekleştireceğiz.
Eğitim boyunca üzerinde çalışacağımız PetClinic web uygulaması için uygulayacağımız katmanlı mimarinin ortaya çıkışını, MVC ile ilişkisini, özelliklerini ve sağladığı faydaları konuşacağız.
PetClinic projesinde ihtiyaç duyacağımız domain sınıflarını birlikte yazacağız.
PetClinic projesinde ihtiyaç duyacağımız dao katmanına ait arayüz sınıflarını birlikte yazacağız.
PetClinic projesinde ihtiyaç duyacağımız servis katmanına ait arayüz sınıflarını birlikte yazacağız.
PetClinic projesinde ihtiyaç duyacağımız dao katmanına ait arayüz sınıflarının in memory gerçekleştirim sınıflarını birlikte yazacağız.
PetClinic projesinde ihtiyaç duyacağımız servis katmanına ait arayüz sınıflarının gerçekleştirimlerini birlikte yazacağız.
Spring Web MVC kabiliyetlerinin Spring Boot uygulaması içerisinde nasıl devreye alınacağını, web isteklerini ele almayı, sunucunun port ve context path ayarlarını değiştirmeyi öğreneceğiz.
PetClinic projesi içerisinde basit bir Controller sınıfı geliştirerek, Spring MVC ile web isteklerini nasıl kolay biçimde ele alarak dinamik içerik üretebildiğimizi göreceğiz.
Web uygulamaları dinamik olarak üretilen web sayfaları ve içeriğin yanı sıra statik web sayfaları, resimler, CSS, javascript dosyaları gibi web kaynaklarına da sahiptir. Bu bölümde Spring Boot ile statik web kaynakları ile kolay ve efektif biçimde nasıl çalışabileceğimizi öğreneceğiz.
PetClinic projesi içerisinde statik içeriğe sahip index.html sayfası oluşturacağız.
Java web uygulamalarının standart ön yüz geliştirme teknolojilerinden birisi olan JSP ile Spring Boot ve gömülü web container’lar içerisinde nasıl çalışabileceğimizi öğreneceğiz.
Spring Boot uygulamalarını executable JAR formatından, executable WAR formatına nasıl dönüştüreceğimizi öğreneceğiz.
PetClinic projesindeki Owner nesnelerini listelediğimiz bir web sayfasını JSP teknolojisi ile geliştireceğiz.
Web istekleri karşılanırken istemci ve sunucu tarafından kaynaklanan herhangi bir hata durumunda kullanıcıya gösterilecek olan hata sayfalarının nasıl özelleştirilebileceğini öğreneceğiz.
PetClinic projesinde meydana gelebilecek istemci kaynaklı 404 hataları sonucu gösterilecek olan bir HTML hata sayfası oluşturacağız.
Spring Web MVC ile çalışırken web isteklerini ele almak için Controller ve Interceptor sınıfları yeterli olur. Ancak herhangi bir nedenle ihtiyaç durumunda bize özel Servlet veya Filter sınıfları yazmamız ve konfigüre etmemiz gerekebilir. Bu bölümde Servlet ve Filter sınıflarını nasıl yazacağımızı, bizim yazdığımız bu sınıfları ve 3rd party Servlet/Filter sınıflarını Spring Boot projesi içerisinde nasıl tanıtacağımızı öğreneceğiz.
PetClinic projesinde örnek bir Servlet yazıp, konfigüre edeceğiz.
JSP teknolojisine alternatif olarak thymeleaf, freemarker gibi template engine’leri Spring Boot projemizde nasıl ayarlayabileceğimizi, şablonları nasıl yönetebileceğimizi öğreneceğiz.
Thymeleaf Template Engine Eclipse plugin Kurulumunu gerçekleştireceğiz.
PetClinic projesinde daha önce JSP teknolojisi ile geliştirdiğimiz Owner listeleme ekranını bu sefer thymeleaf şablon motoru kullanarak geliştireceğiz.
Tarayıcılar CSS, image, javascript gibi içeriklere bir kere eriştikten sonra, bu tür dosyaları daha sonra istemci tarafındaki önbelleklerinden yüklerler ve sunucuya gitme yükünden kurulmuş olurlar. Üretim ortamı için gayet olumlu olan bu kabiliyet geliştirme sürecinde bu dosyalara yapılan değişikliklerin kullanıcıya anında yansımasının önüne geçer. Bu bölümde Spring Boot'un sunduğu cache busting kabiliyeti ile geliştirme ortamında içeriği değişen CSS, Javascript gibi dosyalarının sunucu tarafından anında nasıl yüklendiklerini öğreneceğiz.
PetClinic projesinde cache busting kabiliyetinin nasıl çalıştığını örnekleyeceğiz.
REST tabanlı web servislerinin ortaya çıkışını, RESTful web servisler ile SOAP/WSDL tabanlı web servislerin farkını, HTTP protokolünün temel yapısını, işleyişini, Resource, URL, URI gibi kavramları öğreneceğiz.
Spring MVC kullanarak RESTful web servisleri geliştirmeyi, RESTful API oluşturmayı öğreneceğiz.
PetClinic uygulaması için tasarladığımız örnek REST API'sinin Spring MVC ile nasıl implement edileceğini kaynak kod üzerinden inceleyeceğiz.
Gerektiğinde Spring Boot uygulamamızdan başka RESTful web servislerine erişmek için kullanabileceğimiz RestTemplate konfigürasyonunu ve kullanımını öğreneceğiz.
PetClinic projesindeki Owner kayıtlarını listelemeyi sağlayacak sorgu metotlarını, oluşturacağımız REST API'sine ekleyeceğiz ve kullanımlarını tarayıcı üzerinden test edeceğiz.
Bir önceki örnekte geliştirdiğimiz REST API sorgu metotlarının kullanımlarını RestTemplate ile programatik olarak test edeceğiz.
REST API sorgu metotlarının kullanımlarını RestTemplate ile programatik olarak test etme işlemine bu dersimizde de devam edeceğiz.
Eclipse platformu içerisindeki TCP Monitor kabiliyetini konfigüre ederek web isteklerini nasıl dinleyebileceğimizi, HTTP request header,body, response header ve body gibi bölümlerini inceleyebileceğimizi öğreneceğiz.
PetClinic projesinde yeni bir Owner kaydı eklememizi sağlayacak metodu, oluşturacağımız REST API'sine ekleyeceğiz ve kullanımını test edeceğiz.
PetClinic projesinde mevcut bir Owner kaydını güncellememizi sağlayacak metodu, oluşturacağımız REST API'sine ekleyeceğiz ve kullanımını test edeceğiz.
PetClinic projesinde mevcut bir Owner kaydını silmemizi sağlayacak metodu, oluşturacağımız REST API'sine ekleyeceğiz ve kullanımını test edeceğiz.
RESTful servislerin cevaplarını oluşturmak için ResponseStatus kullanımını PetClinic projesi içerisinde örnekleyeceğiz.
RESTful web servisleri JSON, XML gibi farklı formatlarda içerik üretebilirler. Bu bölümde İstemcinin RESTful web servis çağrısından dönecek cevabın formatını nasıl belirleyebileceğini öğreneceğiz.
PetClinic projesindeki RESTful web servislerin istemcinin kontrolünde XML ve JSON içerik dönmesini sağlayacağız.
HATEOAS, Hypertext As The Engine Of Application State anlamına gelmektedir ve uygulamaların REST API'lerinin harici başka bir dokümana gerek kalmadan dönen cevaplardan keşfedilebilir olmasını hedefleyen bir yaklaşımdır. Spring HATEOAS projesi de RESTFul servislere HATEOAS özelliği kazandırmayı sağlayan bir projedir. Bu bölümde RESTful servislerin cevaplarının nasıl bir yapıda olması gerektiğini ve Spring Boot içerisinden HATEOAS'ı nasıl kullanacağımızı öğreneceğiz.
PetClinic projesinde oluşturduğumuz Owner kayıtlarını dönen RESTful web servisin cevabına HATEOAS'ı uygulayacağız.
Spring Boot, JDBC veya JPA/Hibernate gibi SQL tabanlı veri erişim teknolojileri ile çalışmayı kolaylaştırır. JDBC veya JPA/Hibernate ile çalışırken ihtiyaç duyulan DataSource bean’i Spring Boot tarafından otomatik olarak yaratılıp yönetilmektedir. Bu bölümde DataSource bean’ininin konfigürasyon ayarlarını nasıl değiştirebileceğimizi, uygulama ihtiyaçlarına göre farklı bir DataSource bean’nini nasıl kullanabileceğimizi öğreneceğiz.
Spring H2, HSQLDB, Derby gibi farklı gömülü veritabanları ile çalışmayı desteklemektedir. Bu bölümde H2 veritabanı özelinde gömülü veritabanları ile nasıl çalışabileceğimizi ve H2 web console’u kullanmayı öğreneceğiz.
PetClinic projesinde H2 veritabanını gömülü olarak nasıl çalıştıracağımızı öğreneceğiz.
PetClinic projesinde H2 veritabanını harici olarak nasıl çalıştıracağımızı göreceğiz.
Spring Boot Tomcat, Hikari, C3P0 ve Commons DBCP connection pool kütüphaneleri ile çalışmayı desteklemektedir. Bu bölümde kullanmak istediğimiz connection pool kütüphanesini nasıl devreye alacağımızı ve connection pool ayarlarını değiştirmeyi öğreneceğiz.
Spring Boot web uygulaması bootstrap sürecinde veritabanı şemasını, uygulamanın çalışması için gerekli ilk veya örnek verileri SQL script’leri şeklinde ortama göre yüklemeyi sağlar. Bu bölümde, şema ve data SQL scriptlerini nasıl yükleyebileceğimizi veya data initialization sürecini nasıl devre dışı bırakabileceğimizi öğreneceğiz.
IDE içerisinde SQL dosyalarını daha kolay oluşturmamızı ve yönetmemizi, gerekirse SQL ifadelerini veritabanına bağlanarak çalıştırmamızı sağlayacak SQL development tools eklentisinin kurulumunu gerçekleştireceğiz.
PetClinic projesi için şema DDL ifadeleri ve veri DML ifadeleri içeren schema.sql ve data.sql dosyaları oluşturup veritabanını initialize etmeyi ve bu işlemi platforma göre nasıl özelleştirebileceğimizi göreceğiz.
Bu bölümde Spring Boot’un JDBC API üzerinden veri erişim işlemleri gerçekleştirmek için ne tür kabiliyetler sunduğunu öğreneceğiz.
PetClinic projesinin DAO katmanını Spring'in JDBC kabiliyetlerini kullanarak geliştireceğiz.
Spring'in JDBC kabiliyetleri arasında SQL ifadelerinde pozisyonel parametreler kullanmak yerine ORM sorgularındaki gibi isimlendirilmiş (named) parametrelerle çalışmayı sağlayan NamedParameterJdbcTemplate'de vardır. Bu bölümde isimlendirilmiş parametrelere sahip SQL ifadelerini nasıl oluşturacağımızı ve NamedParameterJdbcTemplate'i nasıl kullanacağımızı öğreneceğiz.
Spring’i en popüler kılan özelliklerinden birisi de farklı veri erişim teknolojileri ile aynı anda çalışabilmeyi sağlayan transparan bir transaction yönetim altyapısı sunmasıdır. Bu bölümde Spring PlatformTransactionManager soyutlamasını, dekleratif transaction yönetimini kullanmayı öğreneceğiz.
PetClinic projesinde servis katmanını transactional yaparak, servis metotlarında gerçekleştirilen işlemlerin transaction içerisinde atomik olarak yürütülmelerini sağlayacağız.
Bu bölümde Spring Boot ile Spring Data JPA projesi ve Hibernate’in en son sürümü ile nasıl çalışacağımızı, DAO katmanındaki bean’lerimizi JPA/Hibernate kullanarak nasıl yazabileceğimizi, domain sınıflarındaki mapping tanımlarımızı otomatik olarak yüklemeyi ve JPA ayarlarını ortama göre yönetmeyi öğreneceğiz.
PetClinic projesinin veri erişim (DAO) katmanındaki arayüzleri JPA ile geliştireceğiz. Bunun için bu dersimizde domain sınıflarının JPA mapping'lerini yapacağız.
PetClinic projesinin OwnerRepository ve Pet Repository arayüzlerinin JPA gerçekleştirimlerini yapacağız.
JPA/Hibernate ile çalışanlar için en bilindik problemlerden birisi de LazyInitializationException'lardır. Bu bölümde entity'lerin lazy ilişkilerine problemsiz erişebilmek için ne yapmamız gerektiğini ve Spring Boot platformunun bize sağladığı kolaylıkları öğreneceğiz.
Spring'in dekleratif transaction yönetiminde servis metot çağrılarının nasıl sonlandığı transaction'ın sonucunu da belirler. Eğer metot başarılı sonlanmış ise transaction commit edilir. Ancak metot başarısız sonlanmış ise, yani metot herhangi bir Exception fırlatarak sonlanmış ise, bu durumda transaction'ın nasıl sonuçlanacağını Spring exception türüne bakarak belirler. Bu bölümde dekleratif transaction yönetimindeki transaction rollback kurallarını ve bunları nasıl değiştirebileceğimizi öğreneceğiz.
Servis katmanındaki metotların çağrılması veya bu metotların birbirlerini çağırmaları durumunda yeni transaction başlatılıp başlatılmayacağı, mevcut transaction varsa bundan devam edilip edilmeyeceğinin belirlenmesine transaction propagation adı verilir. Bubölümde Spring'in transaction propagation kurallarını ve iç içe servis metot çağrılarında transaction'ların propagation kurallarını ile birlikte nasıl ele alındıklarını inceleyeceğiz.
Salt sorgu içerikli servis metotlarındaki yürütülen transaction'ı veri erişim teknolojisine göre optimize etmek mümkündür. Bu bölümde Spring'in readonly transaction kabiliyetini ve nerelerde kullanılabileceğini öğreneceğiz.
PetClinic projesindeki servis bean'inin metotlarının transaction ayarlarını nasıl değiştirebileceğimizi öğreneceğiz.
Spring Boot Spring Security üzerinden web uygulamasının kimliklendirme ve yetkilendirme ihtiyaçlarını karşılar. Bu bölümde Spring Boot uygulamasının güvenlik kabiliyetlerini nasıl devreye alacağımızı ve varsayılan güvenlik ayarlarını öğreneceğiz.
Spring Boot, kurumsal web uygulaması için bir takım varsayılan güvenlik ayarlarını otomatik olarak devreye almaktadır. Bu ayarları uygulamaya göre özelleştirmek mümkündür. Bu bölümde varsayılan ayarları nasıl devre dışı bırakıp, uygulamaya özel güvenlik ayarları yapabileceğimizi öğreneceğiz.
PetClinic projesinde varsayılan güvenlik ayarlarını devre dışı bırakıp, uygulamaya özel güvenlik ayarları yapmaya başlayacağız.
Spring Security'nin son sürümlerinde artık CSRF saldırılarının logout işlemlerini de etkileyebileceği ön görülerek, logout işlemlerinin HTTP POST metot vasıtası ile tetiklenmesi istenmektedir. Bu bölümde uygulama içerisinde logout kabiliyetinin bu duruma uygun biçimde nasıl kullanılabileceğini öğreneceğiz.
PetClinic projesinde logout kabiliyetini HTTP POST üzerinden kullanacağız.
HTML form tabanlı kimliklendirmeyi nasıl devreye alacağımızı ve uygulamanın ihtiyaçlarına göre özelleştirebileceğimizi öğreneceğiz.
Bu bölümde form tabanlı kimliklendirmede beni hatırla kabiliyetinin nasıl çalıştığını ve uygulamamızda bu kabiliyeti nasıl devreye alacağımızı öğreneceğiz.
Browser authentication olarak da bilinen HTTP basic authentication Spring Boot tarafından da varsayılan kimliklendirme yöntemi olarak kullanılmaktadır. Bu bölümde kimliklendirme sürecini uygulamaya göre özelleştirirken basic authentication kabiliyetinin nasıl ayarlanabileceğini, uygulama içerisinde web kaynaklarının bir bölümünübasic authentication, diğer bir bölümünü de form authentication ile nasıl kimliklendirmeye tabi tutabileceğimizi öğreneceğiz.
PetClinic projesinde HTTP basic authentication kullanımını devreye alacağız, RESTful servislere erişimde RestTemplate üzerinden kullanıcı kimlik bilgilerini nasıl gönderebileceğimizi öğreneceğiz.
Spring Boot H2 veritabanı kullanan uygulamalar için web-console desteği sunmaktadır. Bu bölümde H2 web console’un Spring Security konfigürasyonundan etkilenmeden nasıl erişilebilir kılınacağını öğreneceğiz.
PetClinic projesinde gerekli Spring Security güvenlik ayarlarını yaparak H2 web console'u erişilebilir kılacağız.
Spring Security kullanıcı bilgilerine erişmek için UserDetailsService soyutlamısını kullanır ve farklı user realm diye tabir edilen lokasyonlardan kullanıcı bilgilerini yüklemeyi sağlar. Spring Boot’da varsayılan durumda user isimli bir kullanıcı ile hafızadan çalışmaktadır. Bu bölümde kullanıcı ve rol bilgilerini veritabanında yönetmek için gerekli şema yapısını ve bu bilgilerin veritabanından nasıl yüklenebileceğini öğreneceğiz.
PetClinic projesinde kullanıcı ve rol bilgilerini veritabanında yönetmek için gerekli şema tanımlarını yapacağız, örnek veriyi oluşturacağız ve Spring Security'nin kullanıcı bilgilerini JDBC ile veritabanından elde etmesini sağlayacağız.
Spring Security kullanıcı şifrelerinin user realm içerisinde kriptolu biçimde tutulması için SHA, MD5, bcrypt gibi farklı hashing algoritmaları ile çalışamayı desteklemektedir. Bu bölümde kriptolu şifrelerin nasıl oluşturulabileceğini ve kullanılacağını öğrenceğiz.
PetClinic projesinde bcrypt kullanarak şifreleri kriptolu biçimde saklayacağız.
Hangi web kaynağına hangi rolde kullanıcının erişeceğinin denetlenmesi işlemine yetkilendirme adı verilir. Bu bölümde web kaynaklarının erişim yetkilerini nasıl tanımlayabileceğimizi ve yetkisiz erişim söz konusu olduğunda kullanıcıya gösterilen hata mesajı üzerinde duracağız.
PetClinic projesinde farklı web sayfalarına farklı rollerde kullanıcıların erişmesini sağlayacağız.
Bu dersimizde REST API'deki NON-GET istekler için (POST, PUT, DELETE) CSRF korumasına takılmayan ayrı bir SecurityConfiguration yapılmasını örnekliyoruz.
Spring TestContext Framework olarak da bilenen Spring’in test modülünün entegrasyon ve birim testleri yazmak ve çalıştırmak için ne tür kabiliyetler sağladığını ve Spring Boot içerisinde test kabiliyetlerini nasıl devreye aldığımızı ve entegrasyon birim testlerini nasıl yazıp çalıştıracağımızı öğreneceğiz.
Entegrasyon testlerinin çalıştırılması sırasından ApplicationContext’in tekrar tekrar yaratılması testlerin çalışma sürelerini çok uzatmaktadır. Spring Test modülü test sınıflarında yaratılan ApplicationContext’i cache’leyerek testlerin daha hızlıçalışmasını sağlamaktadır. Bu bölümde Spring Test modülünün ApplicationContext cache kabiliyetinin özelliklerini, nasıl çalıştığını ve gerektiğinde ApplicationContext’in yaratılmasını nasıl tetikleyebilceğimizi öğreneceğiz.
Bu bölümde Spring’in entegrasyon testlerini sınıf veya metot düzeyinde platforma göre çalıştırmayı sağlayan kabiliyetini nasıl kullanacağımızı öğreneceğiz.
PetClinic örnek projemizde Spring test kabiliyetlerini devreye aldıktan sonra PetClinicService üzerinden Owner kayıtlarına erişmeyi test edeceğiz.
Spring MVC Controller metotlarını standalone ve web ortamında test ederken HTTP request, response, session gibi web katmanına ait nesnelerin test metotları içerisinde nasıl erişlebildiklerini öğreneceğiz.
Daha önce REST kabiliyetlerini örneklemek için yazdığımız PetClinicRestControllerTests sınıfını Spring Boot'un test kabiliyetlerini kullanacakb içimde refactor edeceğiz.
Springin sunduğu MockMvc ve ilişkili yapıları kullanarak Controller metotlarını klasik JUnit birim testlerine tabi tutmayı öğreneceğiz.
MockMvc ve ilişkili diğer yapıları kullanan bir entegrasyon birim testi yazarak, /owners request URI'na erişimi ve bu erişim sonucunda owners sayfasının model verisi ile dönüp dönmediğini test edeceğiz.
Bu bölümde veri erişim stratejilerini test ettiğimiz test metotları içerisinde transaction yönetimini nasıl devreye ve Spring Test modülünün entegrasyon birim testlerinin birbirlerinin yaptığı değişikliklerden etkilenmemelerini nasıl sağladığını öğreneceğiz.
Testlerin transactional çalıştırılmasına paralel olarak JPA/Hibernate kullanan metotların test edilmesi sırasında veritabanındaki kısıtların doğru bir şekilde sınanıp sınanmadığından emin olabilmek için bu tür testlerin nasıl yazılması gerektiğini öğreneceğiz.
OwnerRepository ile Owner nesnesi oluşturup, persist etme işlemini transactional bir test yazarak gerçekleştireceğiz. Örnek üzerinde ayrıca false positive durumunu ve bunun önüne nasıl geçileceğini de örnekleyeceğiz.
Bu bölümde Spring Boot içerisinde metot düzeyinde yetkilendirmeyi nasıl devreye alacağımızı, metot düzeyinde yetkilendirmede kullanılan @Secured, @PreAuthorize, @RolesAllowed gibi anotasyonları, bunları nasıl kullanacağımızı ve entegrasyon birim testleri üzerinden metot düzeyinde yetkilendirmenin nasıl test edilebileceğini öğreneceğiz.
Bu dersimizde PetClinic projesinde Spring Security'nin metot düzeyinde yetkilendirme kabiliyetini devreye alarak, PetClinicService bean'inin findOwners metoduna erişim yetki kontrolüne tabi tutacağız. Ardından farklı test metotları ile bu metoda erişim durumlarını örnekleyeceğiz.
Bu dersimizde yeni bir Owner kaydı yaratma işlemini örnekleyeceğiz. Owner kaydı yaratmak için mvc controller ve JSP sayfası geliştireceğiz.
Bu dersimizde mevcut owner kayıtlarından herhangi birisini seçerek güncelleme işlemini örnekleyeceğiz. Bu işlem için bir mvc controller sınıfı ve JSP sayfası geliştireceğiz.
Bu dersimizde mevcut owner kayıtlarından herhangi birisini seçerek silme işlemini gerçekleştireceğiz. Örnek sırasında silinecek owner kaydını görüntülediğimiz ve silme işlemini tetiklediğimiz bir JSP sayfası ve silme işlemini gerçekleştirdiğimiz bir mvc controller sınıfı implement edeceğiz.
Daha önceki derslerimizde geliştirdiğimiz owner yaratma ve güncelleme sayfalarına mvc validasyon kabiliyeti ekleyerek, form submit işlemi sonrasında otomatik olarak validasyon işleminin nasıl gerçekleştirileceğini ve validasyon hatalarının jsp sayfaları içerisinde nasıl görüntüleneceğini örnekleyeceğiz.
Owner yaratma, güncelleme ve silme işlemleri sonucu JSP sayfalarında nasıl mesaj görüntüleyebileceğimizi örnekleyeceğiz.
En güncel Spring Boot 2.0.0 sürümü üzerinden Spring, Spring Security, JDBC API, JPA/Hibernate, REST, Servlet, Filter, JSP ve diğer pek çok teknoloji ile hızlı biçimde çalışmaya başlayarak, ilk andan itibaren kurumsal web uygulama geliştirme deneyimi edineceksiniz. Bütün bu teknoloji ve frameworkleri tecrübe etmenin yanı sıra, kurumsal web uygulamalarında terich edilen katmanlı mimari yaklaşımı, Eclipse, Maven, JUnit gibi geliştirme ortamı araçları gibi konular üzerinde de pek çok konuyu pratik yaparak öğreniyor olacaksınız.