«Это 22-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
1. Аннотации конфигурации контейнера
1. @Autowired
Аннотация @Autowired используется для обозначения зависимостей, которые Spring разрешит и внедрит. Эту аннотацию можно использовать в конструкторах, полях и методах установки.
2. @Основной
Когда в системе необходимо настроить несколько bean-компонентов одного типа, @Primary может определить приоритет этих bean-компонентов.
3. @PostConstruct и @PreDestroy
Стоит отметить, что эти две аннотации не принадлежат Spring, они являются производными от двух аннотаций в JSR-250, расположенных в common-annotations.jar. Аннотация @PostConstruct используется для аннотирования методов, которые необходимо выполнить до того, как компонент будет инициализирован Spring. Аннотация @PreDestroy используется для обозначения методов, которые необходимо выполнить перед уничтожением компонента.
4. @Квалификатор
Когда в системе есть несколько bean-компонентов одного типа, @Autowired не знает, какой класс реализации выбрать для внедрения при выполнении внедрения зависимостей. На этом этапе мы можем выполнить точную настройку с помощью аннотации @Qualifier, чтобы помочь @Autowired выбрать правильные зависимости. Вот пример кода для этой аннотации:
2. Аннотации Spring Boot
1. @SpringBootApplication
Аннотация @SpringBootApplication — это аннотация быстрой настройки, в классе, отмеченном ею, вы можете определить один или несколько bean-компонентов, а также автоматически запустить автоматическую настройку bean-компонентов и автоматическое сканирование компонентов. Эта аннотация эквивалентна комбинации @Configuration, @EnableAutoConfiguration и @ComponentScan. В основном классе приложения Spring Boot используется эта аннотация. Пример кода выглядит следующим образом:
@SpringBootApplication
public class Application{
public static void main(String [] args){
SpringApplication.run(Application.class,args);
}
}
2. @EnableAutoConfiguration
Аннотация @EnableAutoConfiguration используется для уведомления Spring об автоматической настройке элементов конфигурации, связанных с этими пакетами зависимостей, на основе пакетов зависимостей, представленных в текущем пути к классам.
3. @ConditionalOnClass и @ConditionalOnMissingClass
Эти две аннотации являются условными аннотациями класса, и они решают, выполнять ли определенные конфигурации на основе того, существует ли определенный класс в качестве основы для суждения. Вот простой пример кода:
@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoConfiguration {
//...
}
4. @ConditionalOnBean и @ConditionalOnMissingBean
Эти две аннотации относятся к условным аннотациям объекта, которые решают, следует ли выполнять определенные методы конфигурации в зависимости от того, существует ли объект в качестве основы. Пример кода выглядит следующим образом:
@Bean
@ConditionalOnBean(name="dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory(){
//...
}
@Bean
@ConditionalOnMissingBean
public MyBean myBean(){
//...
}
5. @ConditionalOnProperty
Аннотация @ConditionalOnProperty будет решать, выполнять ли отмеченный ею метод в зависимости от того, соответствуют ли элементы конфигурации в файле конфигурации Spring требованиям конфигурации. Пример кода выглядит следующим образом:
@Bean
@ConditionalOnProperty(name="alipay",havingValue="on")
Alipay alipay(){
return new Alipay();
}
6. @ConditionalOnResource
Эта аннотация используется для определения наличия файла конфигурации и запуска метода, отмеченного им.Ниже приведен пример кода с использованием этой аннотации:
@ConditionalOnResource(resources = "classpath:website.properties")
Properties addWebsiteProperties(){
//...
}
7. @ConditionalOnWebApplication и @ConditionalOnNotWebApplication
Эти две аннотации используются для определения того, является ли текущее приложение веб-приложением. Если текущее приложение является веб-приложением, используйте Spring WebApplicationContext и определите жизненный цикл его сеанса. Вот простой пример:
@ConditionalOnWebApplication
HealthCheckController healthCheckController(){
//...
}
8. @ConditionalExpression
Эта аннотация позволяет нам контролировать более тонкие ограничения конфигурации на основе выражений. Когда выражение удовлетворяет определенному условию или выражение истинно, будет выполнен метод, помеченный этой аннотацией.
@Bean
@ConditionalException("${localstore} && ${local == 'true'}")
LocalFileStore store(){
//...
}
9. @Условно
Аннотация @Conditional может управлять более сложными условиями конфигурации. Когда встроенная аннотация управления условиями Spring не соответствует требованиям приложения, вы можете использовать эту аннотацию для определения пользовательских условий управления для удовлетворения пользовательских требований. Вот простой пример использования этой аннотации:
@Conditioanl(CustomConditioanl.class)
CustomProperties addCustomProperties(){
//...
}
Суммировать
На этот раз я резюмирую обычное использование различных типов аннотаций в Spring Boot, чтобы каждый мог иметь полное представление об общих аннотациях в Spring Boot. Из-за недостатка места некоторые аннотации, которые обычно не используются в Spring Boot, будут дополнены и объяснены в следующем сообщении.