Автор оригинала: Arjunk.
Аннотации Spring Boot – это тип метаданных, которые предоставляют информацию о программе, которая в ней не содержится. Они не оказывают прямого влияния на код, который они аннотируют.
Принцип соглашения по конфигурации используется вместо XML в аннотациях Spring Boot. Начиная с Java 5.0, язык программирования Java поддерживает аннотации. Аннотации были быстро приняты ведущими Java-фреймворками, и Spring Framework начал использовать их в версии 2.5. Аннотации включают в себя много контекста в своем объявлении из-за того, как они определены.
Примечания к пружинным ботинкам
@Конфигурация Эта аннотация применяется к классам, определяющим компоненты. @Configuration-это класс Java, который действует как аналог файла конфигурации XML. Класс Java, отмеченный аннотацией @Configuration, сам по себе является конфигурацией, включая методы создания экземпляров и настройки зависимостей.
@Bean На уровне метода используется эта аннотация. Аннотация @Bean используется в сочетании с аннотацией @Configuration для создания компонентов Spring. @Конфигурация будет включать методы создания и настройки зависимостей. @Bean будет добавлен к таким методам. Метод с этой аннотацией действует как идентификатор компонента, создавая и возвращая фактический компонент.
Пример:
@Configuration public class Sample{ @Bean public Element element(){ return new Element(name()); } @Bean public Name name(){ return new Name(); } }
@Autowired Поля, методы настройки и конструкторы имеют эту аннотацию. Аннотация @Autowired неявно вводит зависимости объектов. Spring автоматически назначит полям указанные значения при использовании @Autowired для полей и передаст значения для полей, используя имя свойства. @Autowired также можно использовать в частных владениях, как показано ниже.
public class Sample { @Autowired private Element element; private Name name; }
При использовании @Autowired в методах настройки Spring пытается автоматически подключить метод по типу. Вы говорите Spring, что он должен запускать это свойство с помощью метода setter, в который вы можете поместить свой пользовательский код, как и в случае с любым другим свойством.
public class Sample { private Element element; @Autowired public void setElement(Element element) { this.element=element; } }
Внедрение конструктора происходит во время создания объекта, если мы используем @Autowired в конструкторе. При использовании в качестве компонента он сигнализирует конструктору о необходимости автоматического подключения. Следует иметь в виду, что у каждого класса bean может быть только один конструктор с аннотацией @Autowired.
@Требуется В методах установки компонентов используется эта аннотация. Рассмотрим ситуацию, в которой вы должны принудительно применить обязательное свойство. Аннотация @Required указывает, что обязательный атрибут должен быть заполнен во время настройки для соответствующего компонента. В противном случае возникает исключение BeanInitializationException.
@Ленивый В классах компонентов используется эта аннотация. При запуске все автоматические зависимости автоматически создаются и настраиваются. Однако вы можете использовать аннотацию @Lazy над классом для ленивой инициализации компонента. Это указывает на то, что компонент будет создан и инициализирован только при первом запросе.
@Значение На уровнях поля, параметра конструктора и параметра метода используется эта аннотация. Аннотация @Value указывает выражение значения по умолчанию для поля или параметра, которое будет использоваться для инициализации свойства. Вы можете использовать аннотацию @Value для ввода значений из файла свойств в атрибут компонента, так же, как вы можете использовать аннотацию @Autowired, когда Spring загружает контекст вашего приложения. Поддерживаются заполнители #{…} и $ { … }.
@Квалификатор Вместе с аннотацией @Autowired используется эта аннотация. @Квалификатор может использоваться, когда вам требуется дополнительный контроль над процессом внедрения зависимостей. Для отдельных аргументов конструктора или параметров метода может быть предоставлен @ – квалификатор. Когда вы создаете несколько компонентов одного и того же типа и хотите связать только один из них свойством, эта аннотация используется для минимизации путаницы.
Пример
@Component public class Bean1 implements SampleInterface { // } @Component public class Bean2 implements SampleInterface { // } @Component public class Bean3 implements SampleInterface { // }
Здесь три компонента Bean1, Bean2 и Bean3 реализовали интерфейс SampleInterface. Spring не будет знать, какую из двух реализаций внедрить, если другой компонент автоматически подключит этот интерфейс. Аннотация @квалификатора-один из способов решения этой проблемы.
@Component public class SampleBean { @Autowired @Qualifier("bean2") private SampleInterface dependency; /* Code */ }
@Компонент Эта аннотация используется для указания компонента Spring в классе. Аннотация @Component обозначает класс Java как компонент или компонент, чтобы механизм сканирования компонентов Spring мог добавить его в контекст приложения.
@Контроллер Аннотация @Controller обозначает, что класс является контроллером пружины. Эта аннотация может быть использована для идентификации контроллеров Spring MVC или Spring Web Flux.
@Репозиторий Эта аннотация применяется к классам Java, имеющим прямой доступ к базе данных. Любой класс, который служит хранилищем или объектом доступа к данным, может использовать аннотацию @Repository в качестве маркера.
В эту аннотацию включена опция автоматического перевода. Когда в репозитории @возникает исключение, у исключения есть обработчик, поэтому нет необходимости добавлять блок try catch.
@Сервис Это аннотация, которая применяется к классу. Класс Java с аннотацией @Service выполняет службу, такую как выполнение бизнес-логики, выполнение вычислений или вызов внешних API. Это настраиваемая версия аннотации @Component, предназначенная для использования на уровне сервиса.
** @Включить автоконфигурацию** Основной класс приложения часто аннотируется этой аннотацией. Базовый “пакет поиска” неявно определяется аннотацией @EnableAutoConfiguration. Spring Boot начнет добавлять компоненты на основе параметров пути к классам, других компонентов и различных параметров свойств, если эта аннотация присутствует.
@SpringBootApplication При создании проекта Spring Boot эта аннотация применяется к классу приложения. Класс с аннотацией @SpringBootApplication должен быть сохранен в базовом пакете. Сканирование компонентов-это единственное, что делает приложение @SpringBootApplication. Однако он будет сканировать только свои подпакеты. Аннотация @SpringBootApplication полезна, так как она добавляет все следующее:
- @Включить автоконфигурацию
- @ComponentScan
- @Конфигурация
@Контроллер Эта аннотация применяется к классам Java в вашей программе, которые служат контроллерами. Аннотация @Controller позволяет автоматически определять классы компонентов в пути к классам и автоматически регистрировать объявления компонентов для них. Вы можете добавить сканирование компонентов в свои настройки, чтобы включить автоматическое обнаружение таких аннотированных контроллеров. Аннотация @Controller в классе Java позволяет ему обрабатывать несколько сопоставлений запросов. Spring MVC и Spring Web Flux поддерживают эту аннотацию.
@CrossOrigin Эта аннотация используется для облегчения запросов перекрестного происхождения как на уровне класса, так и на уровне метода. Хост, который обслуживает JavaScript, часто отличается от сервера, который обслуживает данные. Совместное использование ресурсов между источниками (CORS) в этом случае обеспечивает междоменное подключение.
Просто добавьте аннотацию @CrossOrigin, чтобы включить это соединение. Аннотация @CrossOrigin разрешает все источники, все заголовки, все методы HTTP, определенные в аннотации @RequestMapping, и максимальный возраст по умолчанию составляет 30 минут. Изменяя значения соответствующих значений атрибутов, вы можете адаптировать поведение.
@CrossOrigin(maxAge = 1400) @RestController @RequestMapping("/address") public class AddressController { @CrossOrigin(origins = "URL_NAME") @RequestMapping("/message") public Message getMessage() { /* ... */ } @RequestMapping("/state") public Note getState() { /* ... */ } }
В этом примере как методы GetMessage (), так и getState() будут иметь максимальную длительность 1400 секунд. Кроме того, GetMessage() принимает запросы только от “URL_NAME”, в то время как getState() принимает запросы от любого хоста.
@CookieValue На уровне параметров метода используется эта аннотация. Значение @CookieValue используется в аргументе метода сопоставления запросов. Для определенного имени файла cookie HTTP-файл cookie привязан к аргументу @CookieValue. Эта аннотация используется в методе аннотации @RequestMapping.
Пример
@RequestMapping("/valueCookie") public void getValueCookie(@CookieValue "SESSIONID" String Cookie){ }
@Транзакционный Эта аннотация предшествует определению интерфейса, методу интерфейса, определению класса или общедоступному методу класса. Наличие @Transactional само по себе не вызывает транзакционного поведения. @Транзакционный-это просто метаданные, которые может использовать некоторая инфраструктура среды выполнения. Метаданные используются этой архитектурой для настройки соответствующих компонентов с транзакционным поведением.
@Атрибут запроса Атрибут запроса привязан к параметру метода обработчика с использованием этой аннотации. Spring получает значение именованных атрибутов и использует его для заполнения параметра @RequestAttribute. Аннотация @RequestParam используется для привязки значений параметров из строки запроса, в то время как атрибут @RequestAttribute используется для доступа к объектам, заполненным на стороне сервера.
@RequestBody Аргументы метода обработчика запроса аннотируются этой аннотацией. Аргумент метода должен быть привязан к значению тела HTTP-запроса в соответствии с аннотацией @RequestBody. Конвертер Http – сообщений отвечает за преобразование сообщений HTTP – запросов в объекты.
@RequestHeader Аргументы метода обработчика запросов аннотируются этой аннотацией. Чтобы сопоставить параметр контроллера со значением заголовка запроса, используйте аннотацию @RequestHeader. Когда Spring сопоставляет запрос, @RequestHeader сравнивает имя заголовка с именем аннотации и привязывает значение к параметру метода обработчика. Эта аннотация помогает в поиске информации заголовка в классе контроллера.
@RequestParam Аргументы метода обработчика запросов аннотируются этой аннотацией. Параметры иногда включаются в URL-адрес запроса, который чаще всего используется в запросах GET. Вы можете использовать аннотацию @RequestParam в сочетании с аннотацией @RequestMapping, чтобы получить параметр URL и сопоставить его с аргументом метода в этом сценарии.
@ResponseBody Методы обработчика запросов аннотируются этой аннотацией. Аннотация @ResponseBody аналогична аннотации @RequestBody в том, что она указывает тело ответа. Аннотация @ResponseBody указывает, что тело ответа должно содержать тип результата в любом указанном вами формате, например JSON или XML. HttpMessageConverter используется Spring для преобразования возвращаемого объекта в тело ответа.
Вывод
Spring Boot упростил процесс создания приложений Spring для разработчиков Java. Вы должны быть знакомы с основными аннотациями Spring boot если вы энтузиаст Java или профессионал. В этой статье мы рассмотрели все основные аннотации, которые следует знать.
Оригинал: “https://www.codementor.io/@letstalktech88/spring-boot-annotations-that-a-developer-should-know-1irkex02ax”