Spring Framework, bağımlılıklarınızı yönetirken pek çok esneklik sunar. Bu esnekliklerden biri de @Lazy annotasyonudur. Bu yazıda, @Lazy annotasyonunun ne olduğuna, nasıl kullanılacağına ve bu özelliği kullanmanın avantajlarına bakacağız.
Spring, uygulama başlangıcında genellikle tüm Singleton bean‘lerini oluşturur ve başlatır. Bu, uygulamanın başlangıcında daha uzun bir başlatma süresine neden olabilir. Ancak bazı durumlarda, belirli bir bean’in hemen başlangıçta oluşturulmasına ihtiyaç duymayabilirsiniz. İşte burada @Lazy annotasyonu devreye girer.
@Lazy annotasyonu, bir bean’in sadece ilk kez talep edildiğinde oluşturulmasını ve başlatılmasını sağlar.
@Lazy Kullanımı
1. Bean Konfigürasyonunda
Java konfigürasyon dosyasında bir bean’i lazy olarak işaretleyebilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 |
@Configuration public class AppConfig { @Bean @Lazy public ExpensiveService expensiveService() { return new ExpensiveService(); } } |
2. @Component ve Türevlerinde
@Component, @Service, @Repository veya @Controller gibi stereotip annotasyonlarıyla tanımlanan bileşenlerde de @Lazy kullanabilirsiniz:
1 2 3 4 5 6 7 |
@Service @Lazy public class ExpensiveService { // ... } |
3. Dependency Enjeksiyonunda
Bağımlılıkları enjekte ederken @Lazy annotasyonunu kullanarak, bağımlılığın sadece gerçekten ihtiyaç duyulduğunda başlatılmasını sağlayabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@Service public class NotificationService { private final Lazy<ExpensiveService> expensiveService; @Autowired public NotificationService(Lazy<ExpensiveService> expensiveService) { this.expensiveService = expensiveService; } public void performAction() { // ... ExpensiveService service = expensiveService.get(); // Bu noktada ExpensiveService bean'i oluşturulur ve başlatılır. // ... } } |
@Lazy’nin Avantajları
Daha Hızlı Başlangıç: Uygulama başlangıcında sadece gerçekten ihtiyaç duyulan bileşenler başlatılarak başlangıç süresi kısaltılır.
Daha Az Kaynak Kullanımı: Başlangıçta gereksiz yere bellek ve diğer kaynakların kullanılmasını önler.
Gereksinimlerin Ertelemesi: Bazı bileşenlerin başlangıçta hemen oluşturulmasına gerek olmadığı durumlarda, bu bileşenleri erteleme yeteneği sağlar.
Dikkat Edilmesi Gerekenler
Eğer bir bean’in başlatılmasının uzun sürmesi veya ağır bir kaynak tüketimine neden olması bekleniyorsa, bu bean’i @Lazy ile işaretlemek mantıklıdır.
Ancak, tüm bean’leri @Lazy ile işaretlemek genellikle iyi bir fikir değildir. Bu, bazı hataların veya konfigürasyon sorunlarının uygulama başlatıldığında değil, daha sonrasında ortaya çıkmasına neden olabilir.
Umarım “Spring Boot’ta @Lazy Annotasyonu” başlıklı yazım sizin için faydalı olmuştur.
Şu yazılar da ilginizi çekebilir.
Spring Boot CORS ve Güvenlik Yapılandırması
Yeni bir yazımda görüşmek üzere.
Happy coding!