Sobes.tech
Middle

Spring'de Repository, Component, Controller ve Service anotasyonları arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bu anotasyonlar, Spring bileşenleri için stereotip anotasyonlardır:

  • @Component: Spring IoC konteyneri tarafından yönetilen herhangi bir bileşen için temel anotasyondur. Sınıfın genel bir uygulama bileşeni olduğunu varsayar.
  • @Repository: Veri işlemleri yapan (DAO) sınıflar için özel bir anotasyondur. Spring, JDBC istisnalarının otomatik olarak Spring DataAccessException’a çevrilmesi gibi ek özellikler sağlar.
  • @Service: İş mantığını içeren sınıflar için özel bir anotasyondur. Sınıfın iş mantığı seviyesi bir servis olduğunu belirtir.
  • @Controller: Web katmanında denetleyiciler olarak kullanılan sınıflar için özel bir anotasyondur. Genellikle Spring MVC’de gelen web isteklerini işlemek için kullanılır.

Tüm bu anotasyonlar, @Component için meta-anotasyonlardır; bu, herhangi birinin anotasyonuyla işaretlenmiş sınıfın Spring tarafından bir bileşen olarak kabul edileceği anlamına gelir. Temel fark, semantik ve Spring’in her biri için sağlayabileceği özel işlevsellikte yatar.

// @Component kullanımı örneği
@Component
public class MyGenericComponent {
    // genel işlevsellik
}

// @Repository kullanımı örneği
@Repository
public class UserRepository {
    // veritabanı işlemleri
}

// @Service kullanımı örneği
@Service
public class UserService {
    // iş mantığı
}

// @Controller kullanımı örneği
@Controller
public class UserController {
    // web isteklerinin işlenmesi
}