150.77K
Category: programmingprogramming

@Component

1.

@Component

2.

@Component
@Component — специальная аннотация, которая говорит спрингу, что класс помеченный этой аннотацией следует зарегистрировать как Bean в
контексте приложения(или же в нашем контейнере). Но помимо @Component, Spring также ищет и другие аннотации для регистрации компонентов(или
же Bean). Эти аннотации используют @Component как мета-аннотацию или же аннотацию, которую можно использовать в других аннотациях.
То есть, когда Spring находит аннотацию, в которой есть аннотация @Component, это также говорит спрингу что нужно зарегистрировать этот
компонент в контейнере.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
@AliasFor(
annotation = Component.class
)
String value() default "";
}

3.

@AliasFor
@AliasFor — своеобразная аннотация, которая нужна для переопределения атрибутов мета-аннотации. Если мы
хотим переопределить какой-либо атрибут мета-аннотации, мы должны указать непосредственно сам атрибут и
повесить на него аннотацию @AliasFor().
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}

4.

@Controller и @RestController
Чтобы объявить наш класс контроллером, нам необходимо повесить на него аннотацию @Controller.
@Controller — это аннотация, которая внутри себя использует аннотацию @Component, а
следовательно класс помеченный этой аннотацией будет зарегистрирован в контейнере как Bean.
Класс контроллер — это класс отвечающий за предоставление точек доступа к системе извне.
Другими словами, методы контроллера можно вызвать не только из других частей системы, но
и сделав верный REST-запрос.
Одна из самых важных вещей свойственных контроллеру, это маппинг. Реализуется он при помощи
аннотации @RequestMapping(). Маппинг это ничто иное как адрес для REST-запроса, при вызове
которого, будет вызван необходимый метод.

5.

@Controller и @RestController
@RestController — это аннотация, которая содержит в
себе смесь @Controller и @ResponseBody. Ведет себя
она точно также как и @Controller за одним небольшим
исключением — все методы описанные в @RestController
будут возвращать результат в формате JSON. За это
как раз и отвечает аннотация @ResponseBody.
По своей сути, аннотация @RestController — это
современный стиль написания приложений, когда
серверная часть приложения просто отвечает на запросы
в понятном для любой системы формате — JSON.

6.

@Service
@Service — это аннотация, которая используется для
описания слоя бизнес-логики.
Бизнес-логика — это особый слой приложения, который как
раз и выполняет требуемые клиентом задачи(обработка
данных, подсчет различных коэффицентов, сбор статистики
и т. д.).
Но с этой аннотацией есть один маленький ньюанс, на
самом деле она абсолютно ничем не отличается от
аннотации @Component. Если заменить @Service на
@Component, все продолжит работать также как и работало.

7.

Сегодня мы познакомились с начальными аннотациями,
далее мы продолжим изучать, какие еще аннотации есть
в Spring и Spring Boot.
English     Русский Rules