SpringBoot 的自动装配特性

1. Spring Boot 的自动装配特性

Spring Boot 的自动装配(Auto-Configuration)是一种特性,它允许您在应用程序中使用默认配置来自动配置 Spring Framework 的各种功能和组件,从而减少了繁琐的配置工作。通过自动装配,您可以更快速地搭建和开发应用程序,同时还可以通过覆盖默认配置来适应特定的需求。

自动装配的核心思想是根据应用程序的依赖和配置来自动配置 Spring Bean,以及提供一些默认的行为,从而实现最佳实践和约定优于配置的原则。以下是一些关键概念和使用方式:

  1. 启动器(Starters):Spring Boot 启动器是预定义依赖集合,用于简化特定类型应用的开发。启动器通常包括所需的库、框架和配置,让您可以更轻松地开始开发特定类型的应用,例如 spring-boot-starter-web 用于构建 Web 应用。
  2. 自动配置类:Spring Boot 提供了许多自动配置类,这些类会根据应用程序的依赖和配置自动创建 Spring Bean。例如,DataSourceAutoConfiguration 会根据配置自动创建数据库数据源 Bean。
  3. 条件化装配:Spring Boot 使用条件化装配来决定是否应该自动配置特定的 Bean。可以使用 @ConditionalOn... 注解来定义条件,如 @ConditionalOnClass@ConditionalOnProperty 等。
  4. 自定义配置:如果默认的自动配置不符合您的需求,您可以通过在应用程序中提供自定义的配置来覆盖或扩展默认行为。通过创建 @Configuration 类并定义 Bean,可以完全控制 Bean 的创建和配置。
  5. 禁用自动配置:如果您不希望使用某些自动配置,可以使用 @EnableAutoConfiguration 注解的 exclude 属性或在 application.properties 文件中使用属性来禁用它们。
  6. 自定义启动器:如果您要构建和共享自己的自动配置和依赖集合,可以创建自定义的 Spring Boot 启动器,让其他开发者可以更方便地使用您的功能。

Spring Boot 的自动装配大大简化了项目的配置和开发流程,但需要注意在某些情况下需要额外的配置或修改来满足特定的需求。您可以根据应用程序的需求灵活使用自动装配和自定义配置。

2. 以web开发为例

<dependencies>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>

dependencies>

2.1 自动配好Tomcat

引入Tomcat依赖。启动配置Tomcat

<dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-starter-tomcatartifactId>
      <version>2.1.5.RELEASEversion>
      <scope>compilescope>
dependency>

2.2 自动配好SpringMVC

自动配好SpringMVC常用组件(功能)例如:dispatcherServlet

<dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-webmvcartifactId>
      <version>5.1.7.RELEASEversion>
      <scope>compilescope>
dependency>

2.3 自动配好Web常见功能

SpringBoot帮我们配置好了所有web开发的常见场景,如:字符编码问题

<dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-webartifactId>
      <version>5.1.7.RELEASEversion>
      <scope>compilescope>
dependency>

2.4 默认的包结构

  • 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来
  • 想要改变扫描路径,@SpringBootApplication(scanBasePackages="com.atguigu")或者@ComponentScan 指定扫描路径
@SpringBootApplication
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.atguigu.boot")

2.5 各种配置拥有默认值

  • 所谓自动装配就是初始化各种bean(依据场景启动器start创建),加入IOC容器。
  • 默认配置最终都是映射到某个类上,这个类会在容器中创建对象。如:MultipartProperties
  • SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面

查看容器中的组件:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import tk.mybatis.spring.annotation.MapperScan;

@MapperScan(basePackages = "com.XXX.mapper")
@SpringBootApplication
public class BootStrapApplication {

    public static void main(String[] args) {
        try {
            /**
             * 返回IOC容器
             */
            ConfigurableApplicationContext applicationContext = SpringApplication.run(BootStrapApplication.class, args);
            /**
             * 查看容器中所有组件
             */
            String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
            for (String beanDefinitionName : beanDefinitionNames) {
                System.out.println(beanDefinitionName);
            }
        } catch (Exception e){
            e.printStackTrace();
            System.exit(-1);
        }

    }
}

你可能感兴趣的:(SpringBoot,java,spring,boot,开发语言)