当前位置:首页 > 科技  > 软件

一篇学会SpringBoot的核心内容之自动装配

来源: 责编: 时间:2024-04-26 17:35:13 293观看
导读不面试不知道,现在面试的问题真的是五花八门的,最近就有读者说,在面试的过程中,面试官还提到了关于最初版本的 Spring 还有 SpringMVC 以及现在的 SpringBoot 中的一些相关问题,比如他提到了这个 SpringBoot 的自动装配是

不面试不知道,现在面试的问题真的是五花八门的,最近就有读者说,在面试的过程中,面试官还提到了关于最初版本的 Spring 还有 SpringMVC 以及现在的 SpringBoot 中的一些相关问题,比如他提到了这个 SpringBoot 的自动装配是什么,你是怎么理解的,今天了不起就和大家一起来看看这个关于 SpringBoot 的自动装配。s0s28资讯网——每日最新资讯28at.com

SpringBoot装配机制

SpringBoot的自动装配是一种机制,它可以帮助开发者更快地搭建和运行Spring应用。SpringBoot的自动装配依赖于其提供的starter依赖,这些starter依赖包含了Spring应用所需的大部分配置,使得开发者不需要手动配置这些通用的功能。s0s28资讯网——每日最新资讯28at.com

如果我们这么回答,可能面试官听到就不是很满意了,这时候,我们就得抓住要点来进行分析,这样回答的时候,势必肯定能抓到重点,毕竟面试的时候,每个人的回答肯定也都是不一样的。s0s28资讯网——每日最新资讯28at.com

1.约定优于配置s0s28资讯网——每日最新资讯28at.com

2.核心注解s0s28资讯网——每日最新资讯28at.com

3.自动扫描s0s28资讯网——每日最新资讯28at.com

我们来一个一个的解释这些内容指的到底是什么意思:s0s28资讯网——每日最新资讯28at.com

约定优于配置

SpringBoot的约定优于配置(Convention Over Configuration)主要体现在以下几个方面:s0s28资讯网——每日最新资讯28at.com

自动配置:SpringBoot根据项目的类路径下的jar包依赖关系,自动配置相应的Bean。例如,当检测到HSQLDB数据库驱动在类路径下时,它会自动配置一个嵌入式数据库实例和相关的JPA/Hibernate设置。s0s28资讯网——每日最新资讯28at.com

目录结构约定:SpringBoot遵循一定的目录结构约定,使得开发者可以将代码和资源放在约定的目录下,而不需要在配置文件中指定。例如,静态资源默认放在src/main/resources/static或src/main/resources/public目录下,模板文件默认在src/main/resources/templates下。s0s28资讯网——每日最新资讯28at.com

Starter依赖:SpringBoot提供了一系列的Starter依赖,这些Starter依赖是预定义的依赖集合。通过引入相应的Starter依赖,可以自动引入相关的库和默认配置,从而简化了项目的依赖管理。例如,通过引入spring-boot-starter-web依赖,就能够快速搭建一个基于Spring MVC的Web应用。s0s28资讯网——每日最新资讯28at.com

核心注解EnableAutoConfiguration

EnableAutoConfiguration 是 Spring Boot 的核心注解之一,它告诉 Spring Boot 根据你添加的 jar 依赖项自动配置你的应用程序。Spring Boot 会自动配置许多方面,例如数据源、消息代理、安全设置等,你通常不需要手动设置它们。s0s28资讯网——每日最新资讯28at.com

这个注解的工作原理是基于在项目的类路径(classpath)中查找特定的 jar 依赖项。一旦找到这些依赖项,Spring Boot 就会自动配置相关的 bean。这减少了大量手动配置和样板代码的需求,使开发者能够专注于他们的应用程序逻辑。s0s28资讯网——每日最新资讯28at.com

@EnableAutoConfiguration 注解通常放在主应用程序类上,这是带有 main 方法的类,该类使用 SpringApplication.run() 方法启动 Spring Boot 应用程序。s0s28资讯网——每日最新资讯28at.com

这里是 @EnableAutoConfiguration 注解的基本用法:s0s28资讯网——每日最新资讯28at.com

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.Configuration;@Configuration@EnableAutoConfigurationpublic class MySpringBootApplication {    public static void main(String[] args) {        SpringApplication.run(MySpringBootApplication.class, args);    }}

在这个例子中,@EnableAutoConfiguration 注解启动了自动配置。Spring Boot 会根据类路径中的 jar 依赖项来自动配置 bean。s0s28资讯网——每日最新资讯28at.com

那么EnableAutoConfiguration 是如何工作的呢?s0s28资讯网——每日最新资讯28at.com

@EnableAutoConfiguration 注解实际上是一个组合注解,它包含了 @AutoConfigurationPackage 和 @Import(AutoConfigurationImportSelector.class)。s0s28资讯网——每日最新资讯28at.com

@AutoConfigurationPackage 注解确保 @Configuration 类(通常位于主应用程序类中)被考虑在内,以便它可以被自动配置的 beans 使用。@Import(AutoConfigurationImportSelector.class) 注解告诉 Spring Boot 从 META-INF/spring.factories 配置文件中加载 auto-configuration 类。Spring Boot 提供了许多这样的配置文件,每个文件都针对特定的技术或功能(如数据源、Web MVC 等)。当 Spring Boot 启动时,它会加载 META-INF/spring.factories 配置文件,并根据你的类路径中的依赖项选择适当的自动配置类。然后,这些自动配置类会注册额外的 beans 到 Spring 的上下文中。s0s28资讯网——每日最新资讯28at.com

如果你不想使用某个特定的自动配置,你可以使用 @EnableAutoConfiguration 注解的 exclude 属性来排除它。s0s28资讯网——每日最新资讯28at.com

比如我们排除某个特定的自动配置s0s28资讯网——每日最新资讯28at.com

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.context.annotation.Configuration;@Configuration@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})public class MySpringBootApplication {    public static void main(String[] args) {        SpringApplication.run(MySpringBootApplication.class, args);    }}

总之,@EnableAutoConfiguration 注解是 Spring Boot 的核心特性之一,它简化了 Spring 应用程序的配置过程,使开发者能够专注于实现业务逻辑。s0s28资讯网——每日最新资讯28at.com

自动扫描

Spring Boot 的自动扫描是 Spring 框架的一个特性,在 Spring Boot 中得到了进一步的简化和增强。它允许 Spring Boot 应用程序自动发现和注册 bean,减少了开发者需要手动配置和声明 bean 的数量。s0s28资讯网——每日最新资讯28at.com

那自动扫描都做了哪些事情呢?s0s28资讯网——每日最新资讯28at.com

组件扫描:默认情况下,Spring Boot 会扫描启动类(通常是带有 @SpringBootApplication 注解的类)所在的包以及其子包下的所有类。它会查找带有 @Component、@Service、@Repository 和 @Controller 等注解的类,并将它们作为 Spring 容器中的 bean 进行注册。s0s28资讯网——每日最新资讯28at.com

配置类扫描:除了普通的组件,Spring Boot 还会扫描 @Configuration 注解的类,这些类通常包含 @Bean 方法定义,用于声明和配置额外的 bean。s0s28资讯网——每日最新资讯28at.com

自动配置类扫描:Spring Boot 还会扫描 META-INF/spring.factories 配置文件,以加载和应用自动配置类。这些自动配置类通常根据类路径下的库和依赖项来提供默认的配置。s0s28资讯网——每日最新资讯28at.com

资源扫描:除了组件和配置类,Spring Boot 还会自动扫描静态资源,如 HTML、CSS、JavaScript 文件以及模板文件(如 Thymeleaf、FreeMarker 等)。这些资源通常放在特定的目录下,如 src/main/resources/static 或 src/main/resources/templates。s0s28资讯网——每日最新资讯28at.com

要开启或调整组件扫描的范围,你可以使用 @ComponentScan 注解。s0s28资讯网——每日最新资讯28at.com

这个注解我们都不用多说了把,指明扫包路径s0s28资讯网——每日最新资讯28at.com

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ComponentScan;@SpringBootApplication@ComponentScan(basePackages = "com.example.myapp") // 指定扫描的包路径public class MySpringBootApplication {    public static void main(String[] args) {        SpringApplication.run(MySpringBootApplication.class, args);    }}

本文链接:http://www.28at.com/showinfo-26-85875-0.html一篇学会SpringBoot的核心内容之自动装配

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 一种避免大量If-else代码的新思路

下一篇: WPF开发:使用命令模式实现Undo和Redo功能

标签:
  • 热门焦点
  • 谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 消费结构调整丨巨头低价博弈,拼多多还卷得动吗?

    来源:征探财经作者:陈香羽随着流量红利的退潮,电商的存量博弈越来越明显。曾经主攻中高端与品质的淘宝天猫、京东重拾“低价”口号。而过去与他们错位竞争的拼多多,靠
  • Android 14发布:首批适配机型公布

    5月11日消息,谷歌在今天凌晨举行了I/O大会,本次发布会谷歌带来了自家的AI语言模型PaLM 2、谷歌Pixel Fold折叠屏、谷歌Pixel 7a手机,同时发布了Androi
  • iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 联想YOGA 16s 2022笔记本将要推出,屏幕支持触控功能

    联想此前宣布,将于11月2日19:30召开联想秋季轻薄新品发布会,推出联想 YOGA 16s 2022 笔记本等新品。官方称,YOGA 16s 2022 笔记本将搭载 16 英寸屏幕,并且是一
  • 最薄的14英寸游戏笔记本电脑 Alienware X14已可以购买

    2022年1月份在国际消费电子展(CES2022)上首次亮相的Alienware新品——Alienware X14现在已经可以购买了,这款笔记本电脑被誉为世界上最薄的 14 英寸游戏笔
  • “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
Top