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
}