@SpringBootApplication annotation’ı
Spring boot uygulamasını çalıştırabilmek için @SpringBootApplication annotationını kullanan bir main class tanımlamak gerekir.
Bu main class diğer paketlerin üzerinde bir kök pakette tutulur ve diğer paketlerdeki bileşenler bu şekilde taranabilir.
uygulamanın context path’ini değiştirme
Context Path web uygulamanıza eriştiğiniz url’nin sonuna eklenen ve uygulamanıza erişmenizi sağlayan bir isimdir.
http://localhost:8080/benimUygulamam url’i içinde context-path değeri ‘/benimUygulamam’ dır.
Context Path’i değiştirmek için application.properties dosyası içinde aşağıdaki tanımlamayı yaparız:
server.servlet.context-path=/benimUygulamam
Constructor Örnek
MainApplication sınıfının bir parametresiz constructor’ı yoksa ve siz başka bir constructor tanımlamışsanız, Spring Boot uygulaması başladığında Spring otomatik olarak bu constructor’ı kullanarak sınıfın bir örneğini oluşturur.
@ConditionalOnProperty Annotation’ı
Property içindeki elemanların durumlarına göre bir Spring bean’i koşullu olarak yaratmak için kullanılır.
@ConditionalOnProperty(name = “myApp.enableSearch”, havingValue = “false”, matchIfMissing = true)
name özelliği, application.properties ya da application.yml içindeki bir değerin adını ifade eder. havingValue bu değerdir. Eğer havingValue içindeki değer yoksa ya da hatalı bir kullanım varsa matchIfMissing devreye girer ve bean çalıştırılır.
Bir interface ve bunun bir abstract methodu olsun. Bu interface’i implement eden iki sınıf olsun. Spring boot MainApplication içindeki parametre alan bir constructor bu interface’i implement eden uygun sınıfı parametre olarak alsın. Hangi sınıfın uygun olduğuna ConditionalOnProperty ile karar verilir. name ve havingValue değerleri standart olarak kullanılır. Hata ya da eksiklik durumları için matchIfMissing özelliği bir sınıfın koşuluna eklenir. Bir nevi default değeri.
Schedule
Belli bir zamanda çalışacak job görevi görecek bir method oluşturmak için Spring’in @Scheduled annotation’ı kullanılır. Uygulamanın ana sınıfı içine @EnableScheduling methodu eklenir. Servis methodu içine de aşağıdaki gibi @Scheduled annotation’ı eklenir.
@Scheduled(cron = "0 55 14 * * ?")
public void performPersonelInserting() { }
Burada cron parametresi bu methodun her gün saat 14:55’te çalıştırılması sağlar.
Saniye : 0
Dakika : 55
Saat : 14
Gün: *
Ay : *
Haftanın Hangi Günü (0-6) : *
Constructor Injection
Constructor injection, spring framework’te kullanılan bir bağımlılık enjeksiyonu yöntemidir. Bir sınıf bağımlılıklarını constructor method sayesinde alır ve kullanır.

Alanlar final olduğunda bağımlılıklar bir kez atanır ve sonrasında değiştirilemez, bu şekilde uygulamanın güvenliği artırılmış olur.
Lombokun @RequiredArgsConstructor özelliği, sınıfın yalnızca final alanları için bir constructor metodunu otomatik olarak oluşturur.
Bean’lerin Oluşturulma Sırası
Spring boot’ta beanler oluşturulurken öncelike @Configuration annotation’lı sınıflar ve @Bean annotation’lı methodlar işlenir. Bu aşamada, diğer bean’ler için konfigürasyon ve bağımlılıklar tanımlanır.
Ardından BeanFactoryPostProcessor ya da BeanPostProcessor gibi özel bean’ler varsa tanımlanır.
Ardından spring component scanning mekanizması çalışır ve Service, Component, Repository, Controller annotation’ı ile tanımlı bileşenler oluşturulur. Burada doğrudan bir sıralama yok. Dependency injection ile bağımlılıklar düzenlenir. (Autowired, Constructor injection).
Bean’lerin oluşturma sıralarını değiştirmek için bazı yöntemler vardır.
- DependsOn: Bir bean’in başka bir Bean’den sonra oluşturulmasını sağlar. Sınıfın üzerinde @DependsOn(“myOtherBean”) kullanılır.
- @Order ile bean’lerin oluşturulma sıraları kontrol edilir.