Раскованная, любовь всей жизни. Культиватор 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.класс):Используемый в методе выше, это означает, что следующий метод выполняется при обнаружении этого исключения.