-
There might be several reasons for elastic search failures during the bootstrap process from the docker container. You might get incredibly frustrated in case you don’t have any clue about what is going on. It was such a case for me recently. In case you face such clueless failures one... [Read More]
-
Mockito and Extension Functions in Kotlin
By Kenan SevindikBeing able to define extension functions to classes that belong to third-party libraries looks very nice at the first point. However, they might become a road blocker during your unit testing, if you are working with Mockito as the mocking library. Let’s talk about the problem using an example, let’s... [Read More] -
What is this SELF in GenericContainer For?
By Kenan SevindikGenericContainer class belongs to TestContainers library, which is used to create a container instance, launch and control it during integration testing. All other TestContainers classes, like MySQLContainer, KafkaContainer, etc., extend from this base class. However, it has a bit weird generic class definition itself as you may notice from the... [Read More] -
TestContainers & MySQL Setup Notes
By Kenan SevindikIntegration tests are one of the fundamental building blocks of the testing pyramid. By using integration tests, we try to verify if our software components interact with each other and with their third-party external dependencies according to the requirements of the software being written. One type of those external dependencies... [Read More] -
EmbeddedRedis Support For Spring Framework
By Kenan SevindikWhen I was working on one of our microservice projects, I’ve come up with a nice project which help us to run a Redis Server as embedded within our Java integration tests. Actually, by using such a library, it becomes very easy to start and stop a Redis server instance... [Read More] -
JPA/Hibernate'de Flush ve Transaction
By Kenan SevindikJPA/Hibernate ile ilgili en çok kafa karıştıran noktalardan birisi de flush işlemi ve bunun transaction ile olan ilişkisidir. Yakın bir zamanda konu ile ilgili aldığım bir soru üzerine önemli gördüğüm noktaları buradan sizinle paylaşmak istiyorum. [Read More] -
Redis Transactions in Spring Enabled Applications
By Kenan SevindikThanks to the Spring Data Redis project’s Redis Repositories support, it is much easier to manage domain objects within the Redis datastore. Redis Repositories also provide support for custom mapping and secondary indexes. Unfortunately, Redis Repositories don’t work with Redis Transactions. If you want to make use of Redis Transactions... [Read More] -
Kafka Transactions in Spring Enabled Applications
By Kenan SevindikKafka’s transactions are very suitable for scenarios that have a read-process-write pattern. It will be enough to add the following property definition in your application in order to enable Kafka transactions while you are working with Spring Boot and Kafka. [Read More] -
Spring Uygulamalarında Kafka ile Transaction Yönetimi
By Kenan SevindikKafka’nın transaction kabiliyeti read-process-write örüntüsüne sahip senaryolar için gayet uygundur. Spring Boot ve Spring Kafka ile çalışırken Kafka’nın transaction kabiliyetini devreye almak için aşağıdaki property tanımını yapmak yeterlidir. [Read More] -
Spring Uygulamalarında Redis ile Transaction Yönetimi
By Kenan SevindikSpring Data Redis projesinin “Redis Repositories” özelliği sayesinde domain nesnelerinin herhangi bir extra efor harcamadan “Redis” veritabanında saklanması mümkündür. Redis Repositories’in custom mapping ve secondary index desteği de söz konusudur. Ancak “Redis Transaction”ları ile çalışmaz. Eğer Redis’in transaction kabiliyetini kullanmak ve Redis veritabanı üzerinde gerçekleştirdiğiniz işlemlerin Spring’in transaction senkronizasyonu ile... [Read More] -
Kotlin'de Singleton Nasıl Implement Edilir?
By Kenan SevindikJava programlama dilinde “static” keyword ile statik sınıflar , statik metotlar ve statik değişkenler tanımlarız. Java’da statik olarak tanımlanmış metot ve değişkenlere de, herhangi bir nesneye ihtiyaç duymadan, sınıf düzeyinde erişebiliriz. Uygulama genelinde bir sınıftan tek bir nesne ile çalışılmasını garanti eden Singleton örüntüsünü de yine bu statik metot ve... [Read More] -
Spring Controller'ların Entegrasyon ve Birim Testleri Nasıl Yapılır?
By Kenan SevindikSpring Application Framework ile çalışırken uygulamaya ait sınıflarımızı yazmanın yanı sıra, ApplicationContext olarak tabir edilen Spring Container konfigürasyonunu gerçekleştirdikten sonra, entegrasyon testlerimizde genel olarak iki veya daha fazla katmanı bir arada testlere tabi tutarız. Örneğin Service ve Repository katmanlarını ApplicationContext’i yaratarak ayağa kaldırır ve servis metot çağrıları sonucu iş mantığının... [Read More] -
Kurumsal Java Dünyası ve Container Kavramı
By Kenan SevindikKurumsal Java dünyasının “Container” kavramı ile ilk tanışması sanırım Java Servlet teknolojisi ve Apache Tomcat ile olmuştur. O günden bu güne kadar da hayatımıza JSP Container’dan EJB Container’a, JSF Container’dan Spring Container’a pek çok “Container” girmiştir. Peki “Container” ne demektir ve bütün bu Container’lar ne iş yaparlar? Aralarındaki benzerlikler ve... [Read More] -
Spring Boot Test Ortamı ve Redis
By Kenan SevindikSpring ekosisteminde çalışırken en çok hoşuma giden özelliklerden birisi de entegrasyon testlerini çalıştırırken veri erişim işlemleri ile ilgili işlemleri hafızada çalışan gömülü bir veritabanı (H2 veya Derby) ile kolayca gerçekleştirebilmemizdir. Böylece testleri herhangi bir ortamda – ortamda daha önceden herhangi bir setup yapaya gerek kalmaksızın – rahatlıkla koşturabiliriz. [Read More] -
Kotlin ve Mockito (2)
By Kenan SevindikKotlin ve Mockito yazı dizimizin ilkinde Kotlin içerisinde Mockito ile mock nesneler oluştururken veya nesnelerimizi spy yaparken Kotlin sınıflarımızın open olması gerektiğinden bahsetmiştik. Kotlinde Mockito kütüphanesi ile çalışırken karşılaşacağımız en temel sorunlardan bir diğeri ise Mockito.any() veya ArgumentCaptor.capture() gibi metotların NULL döndürmesidir. [Read More] -
Kotlin Exception'ları ve Spring Transaction Yönetimi
By Kenan SevindikBilindiği üzere Java programalama dilinde exception’lar checked ve unchecked şeklinde ikiye ayrılır ve geliştirme sürecinde genellikle unchecked exception’larla çalışma tercih edilir. Kotlin’in Java programlama pratiği üzerine koyduğu iyileştirmelerden birisi de bütün exception’ları unchecked olarak ele almasıdır. Kotlin ile çalışırken exception’ları ister Kotlin’in Exception sınıfından, istersek de RuntimeException sınıfından türetelim bu... [Read More] -
Kotlin ve Hibernate Getter Level Access
By Kenan SevindikJPA/Hibernate ile çalışırken PersistenceContext’in entity nesnelerin state’ine doğrudan field düzeyinde mi, yoksa getter metot ile mi erişeceğini @Id anotasyonunu nerede kullandığımız belirlemektedir. Eğer @Id anotasyonunu field üzerinde kullanırsak, JPA/Hibernate field level access stratejisini kullanacaktır, yani entity state’lerine erişmek ve veritabanından okuduğu değerleri entity nesnenin içerisine aktarmak için getter/setter metotlarını kullanmayıp,... [Read More] -
Kotlin ve NPE (2)
By Kenan SevindikBir önceki yazımızda başladığımız Kotlin’de NPE konusunu incelemeye devam ediyoruz. Peki önceki yazımızda bahsettiğimiz durumların dışında başka hangi durumlarda NPE hatası ile karşılaşırız? [Read More] -
Kotlin ve NPE
By Kenan SevindikKotlin’in öne çıkan özelliklerinden birisi de uygulama içerisinde null referansların önüne geçmeye çalışmasıdır. Kotlin’in tip sistemi, uygulamalarımızdan NullPointerException hatalarını ortadan kaldırma hedefi ile tasarlanmıştır. Buna “null safety” adı da verilmektedir. [Read More] -
Kotlin ve Spring MVC Validations
By Kenan SevindikKurumsal Java dünyasında pek çok framework ve çözüm, kabiliyetleri ile ilgili metadata tanımlarını Java anotasyonları şeklinde ele almaktadır. Bunlardan birisi de Java Bean Validation spesifikasyonudur. JSR-380 olarak da bilinen bu spesifikasyon ile domain sınıflarındaki validasyon ihtiyaçları Java anotasyonları ile field veya getter metotlar üzerinde tanımlanmaktadır. Çalışma zamanında da uygun bir... [Read More] -
Mockito'da Mock ve Spy Nesnelerin Eğitilmesi
By Kenan SevindikBir önceki yazımızda Mockito kütüphanesinin Kotlin projelerinde kullanılması üzerinde durmuştuk. Bu konuya devam edeceğiz. Ancak bu yazımızda Kotlin özelinden çıkıp Mockito’nun kullanımı ile ilgili daha genel bir konudan bahsetmek istiyorum. [Read More] -
Kotlin ve Mockito
By Kenan SevindikTDD ile programlama yapan Java yazılım geliştiricilerin en temel araçlarından birisi de Mockito mock kütüphanesidir. Mockito yardımı ile arayüz ve sınıflardan mock ve stub nesneler oluşturarak, bunları eğittikten sonra test ettiğimiz nesneye enjekte ederek birim testlerimizi gerçekleştiririz. [Read More] -
Kotlin ve Spring
By Kenan SevindikKotlin deneyimlerimi paylaşmaya devam ediyorum. Bu yazımızda da Kotlin ile kurumsal yazılım geliştirirken Spring Framework’ün kullanımından bahsedeceğim. [Read More] -
Kotlin ve Hibernate
By Kenan SevindikBir süredir Udemy’deki microservice çalışmalarımızda programlama dili olarak Kotlin’i kullanıyoruz. Hepinizin bildiği gibi Kotlin, Java üzerine geliştirilmiş JVM tabanlı bir programlama dili. Sunduğu iyileştirmeler ve değişiklikler büyük çapta “syntactic sugar” olarak nitelendirilebilir. IntelliJ IDEA ile birlikte (sanırım efektif olarak şu an sadece bu IDE ile çalışılabiliyor) kullanıldığında ve mevcut Java... [Read More] -
Spring Boot & JSPs in Executable JARs
By Kenan SevindikNowadays, almost everyone employs their favorite JS-based framework while developing their dynamic web applications. There are dozens of client- and server-side UI frameworks around, and you can be sure that you are going to be criticized for your choice no matter which one you choose. Some will ask why it... [Read More]