Back to Javatutorial

SpringBoot常见注解

docs/Spring全家桶/SpringBoot/SpringBoot常见注解.md

1.0.02.9 KB
Original Source

1

Spring Boot ͨԶùʹ Spring øס

ڱٽ̳Уǽ̽ org.springframework.boot.autoconfigure org.springframework.boot.autoconfigure.condition еע⡣

2 @SpringBootApplication

ʹע Spring Boot Ӧóࣺ

@SpringBootApplication ʹע Spring Boot Ӧóࣺ

@SpringBootApplication
class VehicleFactoryApplication {

    public static void main(String[] args) {
        SpringApplication.run(VehicleFactoryApplication.class, args);
    }
}

@SpringBootApplication װ@Configuration@EnableAutoConfiguration @ComponentScan ע⼰Ĭԡ

3 @EnableAutoConfiguration

@EnableAutoConfiguration˼壬Զá ζ Spring Boot ·вԶ bean ԶӦǡ

ע⣬DZ뽫ע@Configuration һʹã

@Configuration
@EnableAutoConfiguration
class VehicleFactoryConfig {}

4 @ConfigurationԼ

@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УǽֻÿĻ ˽Ϣƪ¡

4.1 @ConditionalOnClass and @ConditionalOnMissingClass

һжϵע⣬Ҫ֪ܶʱǰbeanģǸⲿjarǷмغжϵġ

ʱ򣬾ҪⲿǷǷǷظbean

ʹЩעͲе/ڣSpring ʹñǵԶ bean

@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoconfiguration {
//...
}

4.2 @ConditionalOnBean and @ConditionalOnMissingBean

Ҫض bean Ĵڻ򲻴ʱǿʹЩעͣ

һעЩͬΪǵжbean

@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
// ...
}

4.3 @ConditionalOnProperty

ͨע⣬ǿԶԵֵ

Ҫע⣬ֵԴapplication.propertiesļе

@Bean
@ConditionalOnProperty(
name = "usemysql",
havingValue = "local"
)
DataSource dataSource() {
// ...
}

4.4 @ConditionalOnResource

ǿ Spring ڴضԴʱʹö壺 ˼壬ҪclasspathԴļʱŽмأҲǺܳõһע⡣


@ConditionalOnResource(resources = "classpath:mysql.properties")
Properties  ditionalProperties() {
// ...
}

4.5 @ConditionalOnWebApplication and @ConditionalOnNotWebApplication

עͨںwebǿȫ޹

ʹЩעͣǿԸݵǰӦóǷ Web Ӧó


@ConditionalOnWebApplication
HealthCheckController healthCheckController() {
// ...
}

4.6 @ConditionalExpression

springbootΪ뵽ע⻹ҪôɴԼдӦûɣ

ǿڸӵʹע⡣ SpEL ʽΪʱSpring ʹñǵĶ壺

@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {
// ...
}

4.7 @Conditional

ʲô⣿ springbootҲṩʲôʽˣֱûдһжtruefalse

ڸӵǿԴһԶࡣ Ǹ Spring Զ @Conditional һʹã

@Conditional(HibernateCondition.class)
Properties  ditionalProperties() {
//...
}

5 ܽ

ڱУǸ΢Զù̲ΪԶԶ bean ṩ