docs/Spring全家桶/SpringBoot/SpringBoot常见注解.md
Spring Boot ͨԶùʹ Spring øס
ڱٽ̳Уǽ̽ org.springframework.boot.autoconfigure org.springframework.boot.autoconfigure.condition еע⡣
ʹע Spring Boot Ӧóࣺ
@SpringBootApplication ʹע Spring Boot Ӧóࣺ
@SpringBootApplication
class VehicleFactoryApplication {
public static void main(String[] args) {
SpringApplication.run(VehicleFactoryApplication.class, args);
}
}
@SpringBootApplication װ@Configuration@EnableAutoConfiguration @ComponentScan ע⼰Ĭԡ
@EnableAutoConfiguration˼壬Զá ζ Spring Boot ·вԶ bean ԶӦǡ
ע⣬DZ뽫ע@Configuration һʹã
@Configuration
@EnableAutoConfiguration
class VehicleFactoryConfig {}
@Configurationãעϣspring(Ӧ)
springbeanʹõxmlļһbeanspringbootУΪãspringṩ@Configurationһע
൱ڰѸΪspringxmlļе<beans>
@ConfigurationעУʹ@BeanעעķصͶֱעΪbean
@ConfigureעĶ£
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
String value() default "";
}
ӶײǺ@Component @Configuration к @Component ácontext:component-scan/@ComponentScanܴ@Configurationעࡣ
ͨDZдԶԶʱϣ Spring ʹǡ ǿͨеעʵһ㡣
ǿԽ˲еעͷ@Configuration @Bean ϡ
ڽIJУǽֻÿĻ ˽Ϣƪ¡
һжϵע⣬Ҫ֪ܶʱǰbeanģǸⲿjarǷмغжϵġ
ʱҪⲿǷǷǷظbean
ʹЩעͲе/ڣSpring ʹñǵԶ bean
@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoconfiguration {
//...
}
Ҫض bean ĴڻʱǿʹЩעͣ
һעЩͬΪǵжbean
@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
// ...
}
ͨע⣬ǿԶԵֵ
Ҫע⣬ֵԴapplication.propertiesļе
@Bean
@ConditionalOnProperty(
name = "usemysql",
havingValue = "local"
)
DataSource dataSource() {
// ...
}
ǿ Spring ڴضԴʱʹö壺 ˼壬ҪclasspathԴļʱŽмأҲǺܳõһע⡣
@ConditionalOnResource(resources = "classpath:mysql.properties")
Properties ditionalProperties() {
// ...
}
עͨںwebǿȫ
ʹЩעͣǿԸݵǰӦóǷ Web Ӧó
@ConditionalOnWebApplication
HealthCheckController healthCheckController() {
// ...
}
springbootΪ뵽עҪôɴԼдӦûɣ
ǿڸӵʹע⡣ SpEL ʽΪʱSpring ʹñǵĶ壺
@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {
// ...
}
ʲô⣿ springbootҲṩʲôʽˣֱûдһжtruefalse
ڸӵǿԴһԶࡣ Ǹ Spring Զ @Conditional һʹã
@Conditional(HibernateCondition.class)
Properties ditionalProperties() {
//...
}
ڱУǸԶù̲ΪԶԶ bean ṩ