SpringBoot

Spring和SpringBoot的区别

Spring 和 Spring Boot 是两个完全不同的概念,虽然它们在名字上有一定的关联,但是它们的作用和定位是不同的。

Spring 是一个开源的企业级 Java 应用开发框架,它提供了一系列的解决方案来简化企业级应用开发的复杂性。Spring 框架支持各种应用程序,从小程序到大型企业级应用,包括 Web 应用程序、消息队列、批处理和大数据等,因此 Spring 被广泛应用于 Java 应用程序的开发。

Spring Boot 则是 Spring 生态系统中的一部分,它是使构建基于 Spring 的应用程序变得更快、更容易的工具。Spring Boot 提供了预先配置好的开发环境,可以极大地降低开发人员的工作量。开发人员可以使用 Spring Boot 快速创建独立的、产品级别的 Spring 应用程序,并且这些应用程序可以直接运行,而无需进行任何配置。

Spring Boot 与 Spring 的最大区别在于,Spring Boot 可以快速帮助开发人员创建可运行的、生产水平的应用,而 Spring 框架本身只是一个框架。Spring Boot 充分利用了 Spring 生态系统的各种模块,根据约定的配置来自动配置应用程序。开发人员可以根据需求选择所需的组件,而无需手动配置所有组件。

简单来说,Spring 是一种框架,用于简化 Java 应用程序的开发;Spring Boot 是一种工具,用于自动配置 Spring 应用程序,使得开发人员可以更快、更易地实现基于 Spring 的应用程序的开发。

SpringBoot核心注解

  1. @SpringBootApplication:一个组合注解,代表着一个Spring Boot应用,包括@Configuration, @EnableAutoConfiguration和 @ComponentScan。

  2. @RestController:常与 @RequestMapping 一同使用,表示这是一个 REST 风格的控制器。该注解简化了 @Controller 和 @ResponseBody 两个注解的组合。

  3. @RequestMapping:用于将请求映射到控制器的处理方法上,支持 GET、POST、PUT 等 HTTP 请求方法。

  4. @Autowired:自动注入 Bean,实现了依赖注入。

  5. @Value:注入值,可以从配置文件中读取。

  6. @Configuration:标注该类为配置类,将一些组件加载到 Spring 容器。

  7. @EnableAutoConfiguration:自动配置注解,让 SpringBoot 自动加载所需的配置。

  8. @ComponentScan:自动扫描注解,指定扫描的包路径,以便 Spring Boot 能够自动加载 Spring 组件。

  9. @EnableConfigurationProperties:可选注解,用于绑定配置文件中的属性值。

以上是 Spring Boot 的部分核心注解,它们为 Spring Boot 应用的开发提供了方便和便捷。使用这些注解可以简化开发过程并提高开发效率。

SpringBoot自动配置

Spring Boot 自动配置(Auto-configuration)是指在 Spring Boot 应用中,当出现某个 Bean 时,Spring Boot 会在容器中自动配置该 Bean,而无需手动配置,从而减少了开发过程中的配置量和复杂度。

其工作原理是通过 Spring Boot 自动配置模块中的 META-INF/spring.factories 文件中配置的自动配置类自动创建 Bean。当 Spring Boot 启动时,自动配置模块中 spring-boot-autoconfigure-*.jar 文件中的 META-INF/spring.factories 中的自动配置类都会被加载,并按优先级顺序执行。

自动配置流程大致如下:

  1. Spring Boot 启动时自动加载 spring-boot-autoconfigure-*.jar 包中的 META-INFO/spring.factories 文件,寻找里面定义的自动配置类;

  2. 在加载所有的自动配置类的时候,会根据类路径上的条件自动加入(Condition)各自的配置;

  3. 自动装配器(AutoConfigurationImportSelector)根据配置或条件判断是否需要自动配置;

  4. 自动装配器创建所有需要的 Bean;

  5. 自动配置完成后的 Bean 会以 Bean 容器的形式注入到应用中以供使用。

Spring Boot 自动配置的优点在于,它避免了对各种依赖和框架进行详细的配置,开箱即用,使我们的开发者可以更专注于业务逻辑的实现。同时,由于我们可以覆盖和定制自动配置,这就可以让我们在需要的时候手动进行调整和优化。

@ConfigurationProperties和@Value注解的作用和区别

@Value 和 @ConfigurationProperties 都可以注入值,它们的作用和区别如下:

  1. 作用:
    @Value 注解用于注入一个具体的值或表达式,适用于简单场景。而 @ConfigurationProperties 注解常用于将一个配置文件的属性值注入到一个 JavaBean 中,适用于复杂场景。

  2. 引用类型:
    @Value 只支持基本数据类型和 String 类型。而 @ConfigurationProperties 支持基本数据类型、String 类型、引用类型等。

  3. 读取值的方式:
    @Value 注解只能从配置文件中读取值,不能从系统属性、环境变量中读取值。而 @ConfigurationProperties 注解则可以通过 prefix 属性指定前缀,可以读取配置文件中的值,也可以从系统属性、环境变量中或者其它配置源中读取配置值。

  4. 校验:
    @Value 不支持校验。而 @ConfigurationProperties 支持校验,可以通过 @Validated 注解结合 JSR-303 标准进行校验。

因此,@Value 适用于简单的配置,而 @ConfigurationProperties 适用于复杂的配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值