Spring'de @Component, @Repository & @Service ek açıklamaları arasındaki fark nedir?
Spring'de @Component
, @Repository
ve @Service
ek açıklamaları birbirinin yerine kullanılabilir mi veya bir gösterim aracı olarak hareket etmenin yanı sıra belirli bir işlevsellik sağlarlar mı?
Başka bir deyişle, bir Service sınıfım varsa ve ek açıklamayı @Service
yerine @Component
olarak değiştirirsem, yine aynı şekilde davranmaya devam eder mi?
Yoksa ek açıklama sınıfın davranışını ve işlevselliğini de etkiliyor mu?
1957
3
Spring Documentation](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-stereotype-annotations) adresinden:
Bunlar neredeyse aynıdır - hepsi sınıfın bir Spring çekirdeği olduğu anlamına gelir.
@Service
,@Repository
ve@Controller
özelleşmiş@Component
lerdir. Bunlarla belirli eylemleri gerçekleştirmeyi seçebilirsiniz. Örneğin:@Controller
fasulyeleri kullanılırBir başka şey de bileşenleri anlamsal olarak farklı katmanlara atamanızdır.
@Component
in sunduğu bir şey, diğer ek açıklamaları onunla birlikte ekleyebilmeniz ve ardından bunları
@Service` ile aynı şekilde kullanabilmenizdir.Örneğin geçenlerde yaptım:
Yani
@ScheduledJob
ile açıklanan tüm sınıflar spring bean'dir ve buna ek olarak quartz jobs olarak kaydedilir. Sadece belirli ek açıklamayı işleyen kodu sağlamanız gerekir.Veritabanı bağlantısı açısından
@Service
ve@Repository
ek açıklamalarının kullanımı önemlidir.@Service
kullanın@Repository
kullanınUygun ek açıklamaları kullanmazsanız, geri alma işlemleri tarafından geçersiz kılınan commit istisnalarıyla karşılaşabilirsiniz. Stres yük testi sırasında JDBC işlemlerini geri alma ile ilgili istisnalar göreceksiniz.