Sobes.tech
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ů
}