【SpringBoot】SpringBoot自动装配原理详解

原文链接

1.什么是SpringBoot?

对于spring框架,我们接触得比较多的应该是spring mvc、和spring。而spring的核心在于IOC(控制反转对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系)和DI(依赖注入IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道)。而这些框架在使用的过程中会需要配置大量的xml,或者需要做很多繁琐的配置。

springboot框架是为了能够帮助使用spring框架的开发者快速高效的构建一个基于spirng框架以及spring生态体系的应用解决方案。它是对“约定优于配置”这个理念下的一个最佳实践。因此它是一个服务于框架的框架,服务的范围是简化配置文件。

2.初步认识Spring Boot

我们可以使用 https://start.spring.io

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

为了让大家看到效果,我们使用spring mvc来构建一个web应用,而springboot帮我们简化了非常多的逻辑使得我们非常容易去构建一个web项目。

springboot提供了spring-boot-starter-web自动装配模块

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

在当前项目下运行mvn spring-boot:run 或者直接运行main方法就可以启动一个使用了嵌入式tomcat服务请求的web应用,但是我们没有提供任何服务web请求的controller,所以访问任何路径都会返回一个springboot默认的错误页面(whitelabel error page)

所以,我们可以创建一个Controller来实现请求

@RestController
public class HelloController {

    @GetMapping("/say")
    public String sayHello(){
        return "hello Mic";
    }
}

访问http://localhost:8080/say 就可以获得一个请求结果。 这样就完成了一个非常简单的web应用。 springboot是一个约定优于配置的产物,所以在快速构建web应用的背后,其实有很多的约定。

  1. 项目结构层面,静态文件和页面模版的存放位置变成了src/main/resources对应的子目录下
  2. 自动嵌入tomcat作为web容器对外提供http服务,默认使用8080端口监听
  3. 自动装配springmvc必要的组件

3.Spring Boot四大核心

EnableAutoConfiguration 自动装配
Starter组件, 开箱即用
Actuator 监控
Spring Boot Cli 为Spring Cloud 提供了Spring Boot 命令行功能

那今天主要给大家讲讲Enable*这个注解

4.Enable 注解的作用

Enable是启用的意思,相当于开启某一个功能

  • EnableScheduling
  • EnableHystrix
  • EnableAsync
  • EnableAutoConfiguration
  • EnableWebMvc

仍然是在spring3.1版本中,提供了一系列的@Enable开头的注解,Enable主机应该是在JavaConfig框架上更进一步的完善,是的用户在使用spring相关的框架是,避免配置大量的代码从而降低使用的难度

比如常见的一些Enable注解:EnableWebMvc,(这个注解引入了MVC框架在Spring 应用中需要用到的所有bean);

比如说@EnableScheduling,开启计划任务的支持;

找到EnableAutoConfiguration,我们可以看到每一个涉及到Enable开头的注解,都会带有一个@Import的注解。

5.深入分析Spring Boot中的自动装配

在Spring Boot中,不得不说的一个点是自动装配,它是starter的基础,也是Spring Boot的核心, 那什么叫自动装配?或者什么叫装配呢?

回顾一下Spring Framework,它最核

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
SpringBoot自动装配原理是基于 Spring 框架的核心特性之一,即依赖注入(Dependency Injection)和控制反转(Inversion of Control)。通过自动装配SpringBoot 可以根据一定的规则,自动将需要的依赖对象注入到相应的组件中,简化了开发者的配置工作。 在 SpringBoot 中,自动装配主要通过以下几个步骤实现: 1. ComponentScan:SpringBoot 会根据指定的包路径进行组件扫描,找到所有被注解标记的组件,如 @Component、@Service、@Repository 等。 2. ConditionalOnClass/ConditionalOnMissingClass:SpringBoot 会根据类路径中是否存在指定的类来判断是否需要装配某个组件。当类存在时,装配该组件;当类不存在时,跳过该组件。 3. ConditionalOnBean/ConditionalOnMissingBean:SpringBoot 会根据容器中是否存在指定的 Bean 来判断是否需要装配某个组件。当 Bean 存在时,跳过该组件;当 Bean 不存在时,装配该组件。 4. EnableAutoConfiguration:SpringBoot 提供了一系列以 Enable 开头的注解,用于开启特定功能的自动配置。这些注解会在特定条件下加载一些默认的配置类,将默认的配置注入到容器中。 5. 自定义配置:除了 SpringBoot 提供的默认自动配置之外,开发者还可以通过自定义配置文件(application.properties 或 application.yml)来覆盖默认配置,实现个性化的自动装配。 总的来说,SpringBoot自动装配原理就是根据一系列的条件和规则,将需要的依赖对象自动注入到相应的组件中,简化了开发者的配置工作,提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值