@SpringBootApplication注解

阅读数:110 评论数:0

跳转到新版页面

分类

python/Java

正文

一、@SpringBootApplication概述

@SpringBootApplication包含三个注解:@Configuration(用于定义配置类)、@EnableAutoConfiguration、@ComponentScan。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    Class<?>[] exclude() default {};

    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    String[] excludeName() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanBasePackages() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackageClasses"
    )
    Class<?>[] scanBasePackageClasses() default {};

    @AliasFor(
        annotation = Configuration.class
    )
    boolean proxyBeanMethods() default true;
}

1、@SpringBootConfiguration

它继承自@Configuration,用于标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解的方法的实例纳入到spring容器中,并且实例名就是方法名

2、@EnableAutoConfiguratiioooon

会自动根据你jar包的依赖来自动配置项目。比如添加spring-boot-starter-web依赖,则会添加Tomcat和Spring MVC,这个注释自动将假设您正在开发一个web应用程序并添加相应的spring设置.

3、@ComponentScan

通俗的讲,@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解 的类,并注册成bean,当然包括 @Component 下的子注解@Service、@Repository、@Controller。@ComponentScan 注解没有类似 、的属性

二、exclude如何使用

比如我的工程里引入的elasticsearch的依赖,使用了es的功能,但是有时我的es环境没准备好,但是我想启用项目,这时就会报错,那么我就可以将es相关的配置exclude掉,这个springboot在启动的时候就不去连接配置es了。

或着排除DataSourceAutoConfiguration,因为这个是自动配置单数据源的,如果你想配置多数据源,那么就需要把这个排除掉,然后自己单独配置多数据源。

@SpringBootApplication
        (exclude = {DataSourceAutoConfiguration.class, ElasticsearchDataAutoConfiguration.class,DataSourceAutoConfiguration.class})
public class Demo1Application {

@SpringBootApplication注解排除参数,不光支持exclude,还有一个excludeName。

public @interface SpringBootApplication {

	/**
	 * Exclude specific auto-configuration classes such that they will never be applied.
	 * @return the classes to exclude
	 */
	@AliasFor(annotation = EnableAutoConfiguration.class)
	Class<?>[] exclude() default {};

	/**
	 * Exclude specific auto-configuration class names such that they will never be
	 * applied.
	 * @return the class names to exclude
	 * @since 1.3.0
	 */
	@AliasFor(annotation = EnableAutoConfiguration.class)
	String[] excludeName() default {};
}
 @SpringBootApplication(excludeName = {"org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration",             
 "org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"})

 




相关推荐

一、概述 springboot中有两种方式使用kafka时,直接使用kafka-client连接kafka服务;另一种是使用spring-kafka框架来连接kafka。 1、版本兼容 使用时要注意版

当然可以自己写redis的工具类,或者使用第三方开源jar包或代码,这里使用spring boot的集成类。 一、pom依赖 <dependency> <gro

websocket协议基于tcp的网络协议,它实现浏览器与器全双工通信。 spring boot2 +websocket 1、添加依赖 <pre clas

背景: 之前用spring boot+mybatis+oracle,现在要改成spring boot_mybatis+postgresql。 为了想让一套代码即可

共同点 都是用来表示Spring某个类是否可以接收HTTP请求。 不同点 @Controller标识一个spring类是Spring MVC c

系统异常捕获 参见:spring boot 2 全局异常处理 @ControllerAdvice(annotations = {RestController.class}) public class

从SSH(Structs/Spring/Hibernate)到SSM(SpringMVC/Spring/MyBatis),到现在一个S(Spring)就够的年代,可见Spring越来越重要了。<

@ConditionalOnMissingBean只能在@Bean注解的方法上使用。 可以给该注解传入参数例如@ConditionOnMissingBean(name = "exa

2.4版本之前 在之前,我们在yaml配置文件中,使用spring.profiles来定义不同环境的标识,比如下面这样: spring: profiles: "dev" name: dev.di

在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。   同时,SpringBoot也支持Undertow容器,Undert