Наиболее часто используемые аннотации в Spring Boot

Spring Boot

Раскованная, любовь всей жизни. Культиватор Java (идентификатор общедоступной учетной записи WeChat: культиватор Java), обратите внимание.

1. Список аннотаций

@SpringBootApplication:Содержит аннотации @ComponentScan, @Configuration и @EnableAutoConfiguration. Где @ComponentScan позволяет Spring Boot сканировать класс Configuration и добавлять его в контекст программы.

@ConfigurationЭквивалент файла конфигурации XML Spring; безопасность типов можно проверить с помощью кода Java.

@EnableAutoConfigurationАвтоматическая конфигурация.

@ComponentScanСканирование компонентов, которое может автоматически обнаруживать и собирать некоторые компоненты.

@ComponentМожет использоваться с CommandLineRunner для выполнения некоторых основных задач после запуска программы.

@RestControllerАннотация представляет собой набор @Controller и @ResponseBody, указывающий, что это bean-компонент контроллера, а возвращаемое значение функции напрямую заносится в тело ответа HTTP, которое является контроллером в стиле REST.

@AutowiredИмпортировать автоматически.

@PathVariableПолучить параметры.

@JsonBackReferenceРешить проблему вложенных внешних ссылок.

@RepositoryRestResourcepublicИспользуйте с spring-boot-starter-data-rest.

2. Подробное объяснение аннотаций

@SpringBootApplication:Объявите, что spring boot автоматически настраивает программу необходимой конфигурацией, что эквивалентно трем конфигурациям: @Configuration, @EnableAutoConfiguration и @ComponentScan.

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScanpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

@ResponseBody:Указывает, что возвращаемый результат этого метода напрямую записывается в тело ответа HTTP, которое обычно используется при асинхронном получении данных и используется для создания RESTful API. После использования @RequestMapping возвращаемое значение обычно анализируется как путь перехода.После добавления @responsebody возвращаемый результат не будет анализироваться как путь перехода, а будет записан непосредственно в тело ответа HTTP.

Например, асинхронное получение данных json и добавление @responsebody напрямую вернет данные json. Эта аннотация обычно используется в сочетании с @RequestMapping. Подпишитесь на официальный аккаунт программиста Xiaole и ответьте на ключевое слово «предложение», чтобы получить вопросы и ответы по алгоритму интервью.

Образец кода:

@RequestMapping(“/test”)@ResponseBodypublic String test(){    return”ok”;}

@Контроллер:Он используется для определения класса контроллера.В проекте spring контроллер отвечает за пересылку URL-запроса, отправленного пользователем, на соответствующий сервисный интерфейс (сервисный уровень).Как правило, эта аннотация находится в классе, а метод обычно необходимо сопоставить с аннотацией @RequestMapping.

Образец кода:

@Controller@RequestMapping(“/demoInfo”)publicclass DemoController {    @Autowired    private DemoInfoService demoInfoService;    @RequestMapping("/hello")    public String hello(Map<String,Object> map){        System.out.println("DemoController.hello()");        map.put("hello","from TemplateController.helloHtml");        //会使用hello.html或者hello.ftl模板进行渲染显示.        return"/hello";    }}

@RestController:Коллекция компонентов уровня управления аннотациями (таких как действие в стойках), @ResponseBody и @Controller.

Образец кода:

import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping(“/demoInfo2”)publicclass DemoController2 {    @RequestMapping("/test")    public String test(){        return"ok";    }}

@RequestMapping:Предоставляет информацию о маршрутизации и отвечает за сопоставление URL-адресов с определенными функциями в контроллере.

@EnableAutoConfiguration:Автоматическая настройка Spring Boot: пытается автоматически настроить приложение Spring на основе добавляемых вами зависимостей jar. Например, если у вас есть HSQLDB в пути к классам и вы вручную не настроили какие-либо компоненты подключения к базе данных, мы автоматически настроим базу данных в памяти».

Вы можете выбрать автоматическую настройку, добавив аннотации @EnableAutoConfiguration или @SpringBootApplication в класс @Configuration. Если вы обнаружите, что применяются определенные классы автоматической настройки, которые вам не нужны, вы можете отключить их с помощью атрибута exclude аннотации @EnableAutoConfiguration.

@КомпонентСкан:Указывает, что этот класс автоматически обнаруживает компоненты сканирования. Личное понимание эквивалентно тому, что если вы просканируете классы с аннотациями, такими как @Component, @Controller, @Service и т. д., и зарегистрируете их как Beans, вы сможете автоматически собрать все компоненты Spring, включая классы @Configuration.

Мы часто используем аннотацию @ComponentScan для поиска bean-компонентов и их импорта с аннотацией @Autowired. Все компоненты Spring, включая классы @Configuration, могут собираться автоматически. Мы часто используем аннотацию @ComponentScan для поиска bean-компонентов и их импорта с аннотацией @Autowired.

Если конфигурации нет, Spring Boot будет сканировать классы, аннотированные с помощью @Service, @Repository и т. д., в пакете, в котором находится класс запуска, и в подпакете.

@Конфигурация:Он эквивалентен традиционному файлу конфигурации xml.Если каким-то сторонним библиотекам необходимо использовать xml-файлы, рекомендуется по-прежнему использовать класс @Configuration в качестве основного класса конфигурации проекта — для загрузки можно использовать аннотацию @ImportResource xml-файл конфигурации.

@Импорт:Используется для импорта других классов конфигурации.

@ИмпортРесурс:Используется для загрузки файла конфигурации xml.

@Autowired:Автоматически импортировать зависимые компоненты

@Оказание услуг:Обычно используется для украшения компонентов сервисного уровня.

@Репозиторий:Использование аннотации @Repository может гарантировать, что DAO или репозитории предоставляют неправильный перевод.Класс DAO или репозиториев, измененный этой аннотацией, будет обнаружен и настроен ComponentScan, и нет необходимости предоставлять для них элементы конфигурации XML.

@Бин:Аннотирование метода с помощью @Bean эквивалентно bean-компоненту, сконфигурированному в XML.

@Ценность:Внедряет значения свойств, настроенных Spring boot application.properties.

Образец кода:

@Value(value = “#{message}”)private String message;

@Inject:Эквивалент @Autowired по умолчанию, но без обязательного атрибута;

@Компонент:Относится к компонентам в целом. Когда компоненты не классифицированы должным образом, мы можем использовать эту аннотацию, чтобы пометить их.

@Бин:Он эквивалентен тому, что в XML, который размещается над методом, а не над классом, что означает, что bean-компонент генерируется и передается Spring для управления.

@AutoWired:Автоматически импортировать зависимые компоненты. Метод по типу. Используйте сконфигурированный Bean-компонент для завершения сборки атрибутов и методов.Он может аннотировать переменные-члены класса, методы и конструкторы для завершения работы по автоматической сборке. При добавлении (required=false) об ошибке не будет сообщено, даже если бин не может быть найден.

@Квалификатор:Когда есть несколько bean-компонентов одного типа, вы можете использовать @Qualifier("name") для указания. Работает с @Autowired. В дополнение к внедрению по имени квалифицированные дескрипторы @Qualifier могут обеспечить более детальный контроль над тем, как выбираются кандидаты.Конкретное использование заключается в следующем:

@Autowired@Qualifier(value = “demoInfoService”)private DemoInfoService demoInfoService;

@Resource(имя=”имя”, тип=”тип”):Если в круглых скобках нет содержимого, по умолчанию используется значение byName. Похоже на @Autowired. Обратите внимание на официальный аккаунт программиста Xiaole и ответьте на ключевое слово «Java», чтобы получить вопросы и ответы на интервью Дачанга.

3. Аннотация JPA

@Сущность: @Таблица(имя=""):Указывает, что это класс сущности. Обычно используемые для jpa, эти две аннотации обычно используются вместе, но если имя таблицы и имя класса сущностей совпадают, @Table можно опустить.

@MappedSuperClass:Используется для определения сущности родительского класса. Атрибуты родительского класса могут наследоваться подклассами.

@NoRepositoryBean:Обычно используемый в качестве репозитория родительского класса, с этой аннотацией Spring не будет создавать экземпляр репозитория.

@Столбец:Его можно опустить, если имя поля совпадает с именем столбца.

@Идентификатор:Указывает, что атрибут является первичным ключом.

@GeneratedValue (стратегия = GenerationType.SEQUENCE, генератор = "repair_seq"):Указывает, что стратегия генерации первичного ключа — последовательность (может быть Auto, IDENTITY, native и т. д. Auto означает, что ее можно переключать между несколькими базами данных), а имя указанной последовательности — repair_seq.

@SequenceGeneretor (имя = "repair_seq", sequenceName = "seq_repair", selectionSize = 1):name — это имя последовательности для использования, sequenceName — это имя последовательности в базе данных, и эти два имени могут совпадать.

@Переход:Указывает, что свойство не является сопоставлением с полем таблицы базы данных, и платформа ORM будет игнорировать это свойство. Если свойство не является сопоставлением полей таблицы базы данных, оно должно быть помечено как @Transient, в противном случае платформа ORM по умолчанию использует его аннотацию как @Basic. @Basic(fetch=FetchType.LAZY): тег может указывать, как загружаются свойства объекта.

@JsonIgnore:Функция состоит в том, чтобы игнорировать некоторые свойства в Java-бине во время сериализации json, и затрагиваются как сериализация, так и десериализация.

@JoinColumn(name="loginId"):Один к одному: внешний ключ в этой таблице, указывающий на другую таблицу. Один ко многим: другая таблица указывает на внешний ключ этой таблицы.

@OneToOne, @OneToMany, @ManyToOne:Соответствует «один-к-одному», «один-ко-многим» и «многие-к-одному» в файле конфигурации спящего режима.

Четыре, понимание, связанное с SpringMVC

@RequestMapping:@RequestMapping("/path") указывает, что этот контроллер обрабатывает все запросы URL для "/path". RequestMapping — это аннотация для обработки сопоставления адресов запросов, которую можно использовать в классах или методах. Используется в классе, указывая, что все методы класса, отвечающие на запросы, используют этот адрес в качестве родительского пути. Аннотация имеет шесть свойств:

  • params: указывает, что запрос должен содержать определенные значения параметров для обработки этим методом.

  • заголовки: указанный запрос должен содержать определенные указанные значения заголовка, чтобы этот метод мог обработать запрос.

  • значение: указывает фактический адрес запроса, указанный адрес может быть в режиме шаблона URI

  • метод: указывает тип метода запроса, GET, POST, PUT, DELETE и т. д.

  • потребляет: укажите тип отправленного контента (Content-Type) запроса на обработку, например, application/json,text/html;

  • производит: указывает возвращаемый тип содержимого, который возвращается только в том случае, если тип (Accept) в заголовке запроса содержит указанный тип.

@RequestParam:Используется перед параметрами метода.

@RequestParam Строка a = request.getParameter("a").

@PathVariable:переменная пути. подобно

RequestMapping(“user/get/mac/{macAddress}”)public String getByMacAddress(@PathVariable String macAddress){    //do something;}

Параметр должен совпадать с именем в фигурных скобках.

5. Глобальная обработка исключений

@КонтроллерСовет:Содержит @Component. можно сканировать. Единая обработка исключений.

@ExceptionHandler(Exception.класс):Используемый в методе выше, это означает, что следующий метод выполняется при обнаружении этого исключения.