Notes on spring boot
@ EnableAutoConfiguration
With this note, spring boot will guess what kind of spring application you are going to develop based on the jar dependency in classpat. For example: spring-boot-starter-web this dependency, then springboot will automatically embed tomcat and springMVC related dependencies, and at startup, launch as a web application. And look for the appropriate configuration parameters, if not, use the default value. Such as: server.port=8080
At the same time, there are some default configurations in spring boot. For example, DataSourceAutoConfiguration automatically configures dataSource. The @ EnableAutoConfiguration annotation adds these default configurations by default. At the same time, it can also be discharged.
For example: @ EnableAutoConfiguration (exclude = DataSourceAutoConfiguration.class)
@ SpringBootApplication
It is an integration of @ SpringBootConfiguration, @ EnableAutoConfiguration, @ ComponentScan. For application bootstrap.
@ Component
It is a class-level annotation. This class is automatically detected when the application is configured through annotations or xml configuration scans. Some special types of annotations derived from @ Component, such as Repository, Service, and Controller, are all Component.
@ Import
Import @ Configuration's configuration class. Equivalent to the import tag in xml.
@ Configuration
Startup configuration parameters, which are equivalent to beans in xml.
@ ConfigurationProperties
ConfigurationProperties specifies the configuration parameters in application.yml. And loaded into the corresponding class.
For example, @ ConfigurationProperties (prefix = "spring.datasource")
@ EnableConfigurationProperties
EnableConfigurationProperties specifies the class annotated by ConfigurationProperties to make it valid.
For example: @ EnableConfigurationProperties (DataSourceProperties.class)
@ Conditional
Like @ ConditionalOnClass, it's just a custom implementation.
@ ConditionalOnProperty
This class takes effect when there is a corresponding parameter in the application.yaml
For example: @ ConditionalOnProperty (prefix = "spring.datasource", name = "type").
@ ConditionalOnClass
This type takes effect when there is a class specified in the ConditionalOnClass comment in the classpath.
Such as:
Configuration@ConditionalOnClass ({DataSource.class, EmbeddedDatabaseType.class}) @ EnableConfigurationProperties (DataSourceProperties.class) @ Import ({DataSourcePoolMetadataProvidersConfiguration.class, DataSourceInitializationConfiguration.class}) public class DataSourceAutoConfiguration {}
@ ConditionalOnMissingBean
In contrast to ConditionalOnClass, when there is no annotated class in classpath. Then this configuration class takes effect.
Such as:
Configuration @ Conditional (PooledDataSourceCondition.class) @ ConditionalOnMissingBean ({DataSource.class, XADataSource.class}) @ Import ({DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class, DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class}) protected static class PooledDataSourceConfiguration {}
@ AutoConfigureAfter
Refers to the configuration of the current configuration class after the specified configuration configuration.
Such as:
@ Configuration@ConditionalOnClass (PlatformTransactionManager.class) @ AutoConfigureAfter ({JtaAutoConfiguration.class, HibernateJpaAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, Neo4jDataAutoConfiguration.class}) @ EnableConfigurationProperties (TransactionProperties.class) public class TransactionAutoConfiguration {}
@ AutoConfigureOrder
The order of automatic configuration.
Configuration@ConditionalOnClass ({JdbcTemplate.class, PlatformTransactionManager.class}) @ AutoConfigureOrder (Ordered.LOWEST_PRECEDENCE) @ EnableConfigurationProperties (DataSourceProperties.class) public class DataSourceTransactionManagerAutoConfiguration {}