Рубрики
Без рубрики

Примечания к пружинным ботинкам Что Разработчик Должен Знать

Аннотации Spring Boot – это тип метаданных, которые предоставляют информацию о программе, которая в ней не содержится. Они не оказывают прямого влияния на код, который они аннотируют.

Автор оригинала: 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”