TGViewer
Java Developer Java Developer @java_developer · 6.35K subscribers
Post #615 690

Forwarded from Java Interview Review

Какие отличия между @⁠Component, @⁠Service, @⁠Repository и @⁠Controller?

@Component – простой способ сделать объявление класса объявлением Spring-бина. Из всех компонентов, которые попали в сканирование (о которых знает @ComponentScan), будут созданы бин-дефинишны.

Остальные аннотации – это алиасы аннотации @Component. Сами по себе они не добавляют поведения, и технически в рамках ядра Spring Framework работают так же.

Эти аннотации называют «Stereotype annotations». Их главное отличие – семантика, логическая роль компонентов:
• @⁠Service – реализация бизнес-логики;
• @⁠Repository – хранилище данных: «репозиторий» из Domain-Driven Design или классический DAO;
• @⁠Controller – обработка веб-запросов (методы @RequestMapping)

Сторонние компоненты могут пользоваться этой семантикой. Например, трансляция исключений Persistence API работает именно на компонентах стереотипа @Repository. Таким образом, в отдельных случаях кроме семантики может меняться и поведение кода библиотек.

#Spring
More from @java_developer
  1. Apr 20, 2025Что посмотреть на выходных — 20 Наткнулся в Ютубе на классное шоу. Такой мини-формат Своей…
  2. Apr 6, 2025Впечатления от JPoint 2025 моего коллеги Впечатления позитивные: большинство докладов понр…
  3. Apr 5, 2025JPoint 2025 Вчера сходил на JPoint — Java-конференцию для опытных разработчиков. Билет мне…
  4. Feb 4, 2025video post
  5. Feb 4, 2025яндексоиды, без негатива )
  6. Dec 24, 2024Kafka Какие есть гарантии доставки сообщений Ответ: 1. At most once (не более одного раза)…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →