@Component
它是一个类级注解。当应用是通过注解来配置或xml配置扫描的时候,这个类就会被自动检测。根据@Component衍生出来的一些特殊类型的注解,如:Repository、Service、Controller,都是Component。
@Import
导入@Configuration的配置class.相当于xml中的import标签。
@Configuration
启动配置参数,相当于xml中的<beans>
@ConfigurationProperties
ConfigurationProperties指定application.yml中的配置参数。并加载到对应的class中。
如:@ConfigurationProperties(prefix = "spring.datasource");
@EnableConfigurationPropertiesbr/>EnableConfigurationProperties指定被@ConfigurationProperties注解的类,使其有效。
如:@EnableConfigurationProperties(DataSourceProperties.class)
@ConditionalOnClassbr/>当classpath中有@ConditionalOnClass注解中指定的类,则此类型生效。
如:
@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
@EnableConfigurationProperties(DataSourceProperties.class)
@Import({ DataSourcePoolMetadataProvidersConfiguration.class,
DataSourceInitializationConfiguration.class })
public class DataSourceAutoConfiguration
@ConditionalOnMissingBeanbr/>与@ConditionalOnClass相反,当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 {
}
@Conditional
与@ConditionalOnClass作用一样,只不过是自定义实现。
@ConditionalOnProperty
当application.yaml中有对应的参数,则此类生效;
如:@ConditionalOnProperty(prefix = "spring.datasource", name = "type")
原文地址:http://blog.51cto.com/881206524/2122565