@SpringBootApplication核心注解

一、Spring Boot 基本认知

  1. 什么是springboot
    Springboot是对Spring系列众多框架的整合,一种全新的编程规范,算是框架中的框架。它简化了Spring众多框架的配置,可以很简单的就创建一个你可以运行的独立的、生产级别的应用系统。
    Springboot默认内置一个Tomcat ,不需要打war包,直接运行jar 即可运行。无需XML配置文件,springboot可以自动扫描包路径,转载并注入对象,并能做到根据 classpath 下jar包自动配置。

  2. 发展历史
    SpringBoot是近几年才发展是来的,主要是能快速开发微服务,适应当下对分布式的需求。2014年springboot开始崛起,进入springboot1.x 时代,以下是springboot版本变迁的主要特点:
    1.x xml时代
    2.x 业务注解,基础配置用xml
    3.x ,4.x java配置类
    5.x 响应式 异步编程时代

二、Spring Boot 核心注解
我们很多人接触第一次SpringBoot会用IDEA创建一个springboot 的web项目,写个HelloWord 就可以直接运行了。没有SpringMVC那么多配置。这是怎么做到的???

@SpringBootApplication
在项目的启动类中,都有这个注解:@SpringBootApplication ,该注解是springboot的核心注解。按住Ctrl,选中@SpringBootApplication 进入SpringBootApplication.class ;有两个注解@SpringBootConfiguration和 @EnableAutoConfiguration,以下主要讲解着两个注解类。

  1. @SpringBootConfiguration
    springboot的配置类注解,按住 Ctrl进入分析,会有一个@Configuration注解接口,@Configuration 表示该类是"配置类" 。当类@Configuration注解时,表示该类是配置类。这样我们就不需要在配置文件中写配置,而是被class类文件代替。有@Configuration注解,该类自动加入spring容器,由容器统一托管。

  2. @EnableAutoConfiguration
    在springMVC项目中,你一定会看到springMVC配置文件:spring.xml ,mybatis.xml等;为什么springboot不需要类似的配置文件,就可以自己运行?
    因为springboot可以自动配置,帮我们都自动配置好了,不需要我们自己手动配置,实现开箱即用的效果。这就是springboot的自动配置。
    而 @EnableAutoConfiguration注解springboot实现自动配置。

例子:

1.@AutoConfigurationPackage 将自动将需要的包及子包纳入spring容器中
		     通过getPackageName()方法
2.AutoConfigurationImportSelector   自动引入第三方依赖(jar包, 配置)
//纳入到扫描器scan
 public String[] selectImports(AnnotationMetadata annotationMetadata) {
        if (!this.isEnabled(annotationMetadata)) {
            return NO_IMPORTS;
        } else {
            AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);
            AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(autoConfigurationMetadata, annotationMetadata);
            return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
        }
    }
总结:
   编写项目时,springMVC 需要手动在代码中对三方依赖进行配置,但是springboot可以自动进行配置
   a. 自己写的代码,@SpringBootConfiguration会扫描配置 ,纳入Spring容器,实现自动配置。
   b. 第三方依赖的jar或配置 
      @EnableAutoConfiguration 会自动配置 不需要自己写spring.xml ,mybatis.xml等配置文件 。

三、如何自动装配
HttpEncodingAutoConfiguration 类
@Configuration :是一个配置类,将此类纳入Spring容器
@EnableConfigurationProperties(HttpEncodingProperties.class) 通过HttpEncodingProperties编码设置成UTF-8(即可自动装配)
如何修改:HttpEncodingProperties
在application.propreties 中 spring.http.encoding.charset=utf-16
prefix + 属性名 ==》引出 配置文件来源:各人文件的prefix

  配置文件执行的条件:  @Conditional 条件
    @ConditionalOnWebApplication      是web应用
	@ConditionalOnClass(CharacterEncodingFilter.class)    项目中存在CharacterEncodingFilter该类
	@ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true)
	
	@Bean
	@ConditionalOnMissingBean(CharacterEncodingFilter.class)
	public CharacterEncodingFilter characterEncodingFilter() {
		CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
		filter.setEncoding(this.properties.getCharset().name());
		filter.setForceRequestEncoding(this.properties.shouldForce(Type.REQUEST));
		filter.setForceResponseEncoding(this.properties.shouldForce(Type.RESPONSE));
		return filter;
	}
    将该方法配置 ,@Bean 纳入spring 容器中,使方法生效

 总结:  Configuration 有很多条件,@Conditional当这些条件都满足时,自动装配生效
        可以通过yml properties 的文件修改, ‘prefix的值 + 属性名’  修改配置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: @SpringBootApplication注解是Spring Boot应用程序的核心注解,它组合了以下三个注解:@Configuration,@EnableAutoConfiguration和@ComponentScan。它们为Spring Boot应用程序提供了自动装配和基础配置的功能。 ### 回答2: @SpringBootApplication是Spring Boot框架中的核心注解。它是一个复合注解,包含了多个注解的功能。 首先,@SpringBootApplication注解是一个组件扫描的开关,会自动扫描当前包以及子包下的所有组件,包括被@Configuration、@ComponentScan、@EnableAutoConfiguration注解修饰的类。这样就可以自动将组件(比如@Controller、@Service等)纳入Spring容器管理,无需配置xml文件。 其次,@SpringBootApplication注解还会自动启用Spring的自动配置功能。Spring Boot框架中内置了很多starter,这些starter包含了常用的第三方库的配置信息,比如数据库、Web、缓存等。当我们引入这些starter依赖后,他们就会根据项目中的配置和依赖自动进行相应的配置,无需手动编写大量的配置代码。 最后,@SpringBootApplication注解还会自动启用Spring Boot的特性,比如自动装配、Spring Boot Actuator等。自动装配是Spring Boot的重要特性之一,它简化了依赖注入的配置,通过一些约定大于配置的规则,可以实现将不同模块之间的依赖关系自动注入到Spring容器中。而Spring Boot Actuator是Spring Boot提供的监控和管理功能,可以通过HTTP接口或者JMX端口来获取应用的运行状态、性能指标、健康状况等信息,方便我们对应用进行监控和管理。 综上所述,@SpringBootApplication注解是Spring Boot框架中的核心注解,它包含了组件扫描、自动配置和特性启用等功能,简化了项目的配置和开发,提高了开发效率和系统的可管理性。 ### 回答3: @SpringBootApplication是Spring Boot框架中的核心注解之一。它是一个复合注解,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan这三个注解的功能。 @Configuration注解表明该类是一个配置类,它可以替代传统的XML配置文件,用于定义配置bean的方法。在Spring Boot中,一般会将@Configuration注解用在主类上,表示这是一个配置类。 @EnableAutoConfiguration注解是开启自动配置的功能。通过@EnableAutoConfiguration,Spring Boot会根据项目的依赖和配置,自动地完成一系列的配置工作,如配置数据库连接、创建Web环境、配置Servlet容器等。这样可以大大简化了项目的配置工作,开发者只需要关注业务逻辑的编写即可。 @ComponentScan注解用于扫描指定包及其子包下的组件(如Controller、Service、Repository等),并将其注册为bean。被扫描的组件可以通过其他注解(如@Component、@Service、@Repository等)进行标识。通过@ComponentScan,Spring Boot可以自动地将这些组件加载到Spring容器中,使其可以被其他组件引用和调用。 综上所述,@SpringBootApplication注解的作用是将@Configuration、@EnableAutoConfiguration和@ComponentScan这三个注解的功能集成在一起,用于简化Spring Boot项目的配置和开发工作。通过使用@SpringBootApplication注解,开发者可以更加便捷地搭建和开发自己的Spring Boot应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值