@EnableAutoConfiguration
有這個(gè)注解,spring boot 就會(huì)根據(jù)classpat中的jar依賴,來猜測你將要開發(fā)一個(gè)什么樣的spring應(yīng)用。比如:spring-boot-starter-web這個(gè)依賴,則springboot就會(huì)自動(dòng)嵌入tomcat和springMVC的相關(guān)依賴,并在啟動(dòng)的時(shí)候,啟動(dòng)為一個(gè)web應(yīng)用。并會(huì)查找相應(yīng)的配置參數(shù),如果沒有,則使用默認(rèn)值。如:server.port=8080;
同時(shí),在spring boot中會(huì)有一些默認(rèn)的配置。如:DataSourceAutoConfiguration就會(huì)自動(dòng)配置dataSource。而@EnableAutoConfiguration這個(gè)注解就會(huì)默認(rèn)增加這些默認(rèn)配置。同時(shí),也可以排出。
如:@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
創(chuàng)新互聯(lián)公司從2013年開始,先為德城等服務(wù)建站,德城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為德城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
@SpringBootApplication
它是@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan的整合。用于application bootstrap.
@Component
它是一個(gè)類級(jí)注解。當(dāng)應(yīng)用是通過注解來配置或xml配置掃描的時(shí)候,這個(gè)類就會(huì)被自動(dòng)檢測。根據(jù)@Component衍生出來的一些特殊類型的注解,如:Repository、Service、Controller,都是Component。
@Import
導(dǎo)入@Configuration的配置class.相當(dāng)于xml中的import標(biāo)簽。
@Configuration
啟動(dòng)配置參數(shù),相當(dāng)于xml中的beans。
@ConfigurationProperties
ConfigurationProperties指定application.yml中的配置參數(shù)。并加載到對(duì)應(yīng)的class中。
如:@ConfigurationProperties(prefix = "spring.datasource");
@EnableConfigurationProperties
EnableConfigurationProperties指定被ConfigurationProperties注解的類,使其有效。
如:@EnableConfigurationProperties(DataSourceProperties.class)
@Conditional
與@ConditionalOnClass作用一樣,只不過是自定義實(shí)現(xiàn)。
@ConditionalOnProperty
當(dāng)application.yaml中有對(duì)應(yīng)的參數(shù),則此類生效;
如:@ConditionalOnProperty(prefix = "spring.datasource", name = "type")
。
@ConditionalOnClass
當(dāng)classpath中有ConditionalOnClass注解中指定的類,則此類型生效。
如:
@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ DataSourcePoolMetadataProvidersConfiguration.class,
DataSourceInitializationConfiguration.class })
public class DataSourceAutoConfiguration {}
@ConditionalOnMissingBean
與ConditionalOnClass相反,當(dāng)classpath中沒有注解指定的類。則此配置類生效。
如:
@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
指的是指定的configuration配置之后,再配置當(dāng)前配置類。
如:
@Configuration
@ConditionalOnClass(PlatformTransactionManager.class)
@AutoConfigureAfter({ JtaAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
Neo4jDataAutoConfiguration.class })
@EnableConfigurationProperties(TransactionProperties.class)
public class TransactionAutoConfiguration {}
@AutoConfigureOrder
自動(dòng)配置的順序。
@Configuration
@ConditionalOnClass({ JdbcTemplate.class, PlatformTransactionManager.class })
@AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE)
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceTransactionManagerAutoConfiguration {}