Middle
Jaký je rozdíl mezi anotacemi Repository, Component, Controller a Service ve Springu?
sobes.tech AI
Odpověď od AI
Tyto anotace jsou stereotypní anotace pro komponenty Spring:
@Component: Základní anotace pro jakoukoli komponentu spravovanou kontejnerem Spring IoC. Předpokládá, že třída je obecnou součástí aplikace.@Repository: Speciální anotace pro třídy, které provádějí operace s daty (DAO). Spring poskytuje další funkce, jako je automatický překlad výjimek JDBC na Spring DataAccessException.@Service: Speciální anotace pro třídy obsahující obchodní logiku. Označuje, že třída je službou na úrovni obchodní logiky.@Controller: Speciální anotace pro třídy používané jako kontrolery v webové vrstvě. Obvykle se používá ve Spring MVC k zpracování příchozích webových požadavků.
Všechny tyto anotace jsou meta-anotace pro @Component, což znamená, že třída označená kteroukoliv z nich bude považována Springem za komponentu. Hlavní rozdíl spočívá ve sémantice a specializované funkčnosti, kterou Spring může poskytnout pro každou z nich.
// Příklad použití @Component
@Component
public class MyGenericComponent {
// obecná funkčnost
}
// Příklad použití @Repository
@Repository
public class UserRepository {
// operace s databází
}
// Příklad použití @Service
@Service
public class UserService {
// obchodní logika
}
// Příklad použití @Controller
@Controller
public class UserController {
// zpracování webových požadavků
}