Spring Boot核心概念:自动配置

devtools/2024/11/20 19:48:02/

Spring Boot的自动配置是其核心特性之一,它旨在尽可能自动配置Spring应用程序。自动配置尝试根据类路径上的jar依赖、定义的bean以及各种属性设置猜测并配置你可能需要的组件。

@SpringBootApplication注解

@SpringBootApplication是一个组合注解,它聚集了以下三个重要注解:

  • @SpringBootConfiguration:标记为配置类,等同于@Configuration
  • @EnableAutoConfiguration:启用Spring Boot的自动配置机制。
  • @ComponentScan:启用@Component注解类的扫描。

示例:使用@SpringBootApplication

java">import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication // 标记主类为启动类
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args); // 启动应用}
}

在上面的示例中,我们使用@SpringBootApplication注解主类,并通过SpringApplication.run()方法启动应用。这将开启自动配置和组件扫描。

@EnableAutoConfiguration注解

@EnableAutoConfiguration告诉Spring Boot基于类路径设置、其他bean以及属性设置来添加bean。这是自动配置的关键激活机制。

示例:独立使用@EnableAutoConfiguration

虽然通常不需要单独使用@EnableAutoConfiguration(因为它已包含在@SpringBootApplication中),但你可以在没有使用@SpringBootApplication的情况下独立使用。

java">import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableAutoConfiguration
public class MyConfiguration {// ...
}

自定义自动配置

Spring Boot允许你创建自定义自动配置,这意味着你可以根据条件自动配置自己的bean。自定义自动配置通常通过@Conditional注解实现。

示例:自定义自动配置

java">import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;@Configuration
public class CustomAutoConfiguration {@Bean@ConditionalOnClass(MyService.class)@ConditionalOnProperty(name = "my.service.enabled", havingValue = "true", matchIfMissing = true)public MyService myService() {return new MyService();}
}public class MyService {// 服务逻辑...
}

在这个例子中,MyService bean仅在MyService类在类路径上,且my.service.enabled属性值为true或缺失时才会创建。

自动配置可以极大地简化Spring应用程序的配置。通过使用@SpringBootApplication@EnableAutoConfiguration注解,你可以让Spring Boot尽可能地自动配置你的应用。此外,通过创建自定义自动配置,你可以扩展自动配置的概念以适用于你自己的组件。


http://www.ppmy.cn/devtools/135566.html

相关文章

《现代制造技术与装备》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《现代制造技术与装备》是不是核心期刊? 答:不是,是知网收录的第二批认定学术期刊。 问:《现代制造技术与装备》级别? 答:省级。主管单位:齐鲁工业大学&#xff0…

Restful API接⼝简介及为什么要进⾏接⼝压测

一、RESTful API简介 在现代Web开发中,RESTful API已经成为一种标准的设计模式,用于构建和交互网络应用程序。本文将详细介绍RESTful API的基本概念、特点以及如何使用它来设计高效的API接口。 1. 基于协议 HTTP 或 HTTPS RESTful API通常使用HTTP&am…

数据库笔记1

相关概念 SQL:操作关系型数据库的编程,是结构化查询语言的简称 DDL数据定义 负责数据结构定义与数据库对象定义 CREATE,ALTER,DROP 表操作 查询当前数据库所有表 先通过ues指令进入 SHOW TABLES; 查询表结构 DESC 表名; 查询指定表的建表语句 SHO…

AI驱动电商新未来:提升销售效率与用户体验的创新实践

在数字化时代,电商行业迎来了前所未有的发展机遇和挑战。借助人工智能(AI)的强大能力,电商平台可以在购物推荐、会员分类、商品定价、供应链管理和智能客服等多个方面实现突破性创新,为用户提供更加个性化、智能化的体…

关于selenium元素找不到的问题(Unable to locate element: {“method“:“xpath“,“selector“:“)

之前一个任务让用selenium爬取制定网站的一些数据,写了代码,在本机上写完后,移植到服务器上,然后在服务器上跑了两次发现,元素找不到了 Unable to locate element: {"method":"xpath","selec…

STM32(hal库)中,为什么DMA没有MSP函数?

在STM32 HAL库中,DMA(直接存储器访问)并没有像其他某些外设(如USART、SPI等)那样拥有专门的MSP(MCU Services Package)初始化函数,这主要是由于DMA的特性和HAL库的设计哲学所决定的。…

ubuntu安装cuda、cudnn和TensoRT【分步安装】

我说实话,这个环境安装真的要了老命,太tm恶心了。 因为遇到了很多问题,非常之恶心 问题一:版本对应 问题二:下载具慢 问题三:上NVIDIA有时候上不去 问题四:找到对应版本点不了 问题五&…

在 Ubuntu 上使用 Traefik Proxy 为 Docker 容器设置反向代理

简介 Traefik(发音为"traffic")是一个开源的反向代理和负载均衡器。它为微服务架构提供了网络入口,特别是在动态、服务密集的环境中(如容器、微服务架构)。由于其设计灵活且易于实施,Traefik 成…