使用Spring Boot的原因解析

 更新时间:2022年07月07日 09:20:52   作者:wadfdhsajd  
Spring Boot是Spring家族的成员,它是一个全新的框架,它的设计目的是尽可能简单和快速的开发、运行Spring应用程序,简化配置,这篇文章主要介绍了为什么使用Spring Boot,需要的朋友可以参考下

为什么要使用Spring Boot?

在使用Spring框架进行开发的过程中,需要配置很多Spring框架包的依赖,如spring-core、spring-bean、spring-context等,而这些配置通常都是重复添加的,而且需要做很多框架使用及环境参数的重复配置,如开启注解、配置日志等。自动配置:spring boot能够根据当前类路径下的类,jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置、无代码生成和XML配置:spring boot配置过程中无代码生成,也无XML配置就能完成所有的配置工作,这一切都是借助于条件注解完成的,这也是spring4.x的核心功能之一。 还有应用监控:spring boot提供一系列端点可以监控服务和应用,做健康检查

Spring Boot是微服务的框架吗?

Spring Boot是Spring家族的成员,它是一个全新的框架,它的设计目的是尽可能简单和快速的开发、运行Spring应用程序,简化配置。它为开发者快捷的使用Spring及相关开发框架提供了便利,但是它并不是微服务的框架,它只是为微服务框架的使用也提供了很好的脚手架。

Spring Boot中的Starter是什么?

Spring Boot中的Starter是一个包含很多依赖描述的集合,只要添加一个Starter,这个Starter里面约定的依赖都会被添加到项目中,例如代码添加了spring-boot-starter-web,执行maven操作就会下载web应用需要的依赖jar。开发者通过使用这些Starter可以快速的搭建开发环境,自动加载所需要的依赖和配置参数属性。

使用Spring Boot快速搭建开发环境,是不是需要从无到有手动搭建?

如果想快速搭建项目开发环境,可以通过Spring Initializr[start.spring.io/]引导快速构建项目。最… Java Initializr[https://start.aliyun.com/],也可以通过它的引导快速构建Java项目。

Spring Boot中@EnableAutoConfiguration注解有什么作用?

@EnableAutoConfiguration注解从字面上理解是开启自动配置,在@EnableAutoConfiguration注解的定义中使用了@Import注解,使用@Import导入 EnableAutoConfigurationImportSelector.class,作用等同于在Spring的xml文件中使用导入,查看EnableAutoConfigurationImportSelector源码会发现它就是用于处理@EnableAutoConfiguration注解的,不过在Spring Boot1.5版本开始被标记为弃用,使用AutoConfigurationImportSelector代替,也就是它的父类,在这个类中将在classpath下jar包中META-INF目录下搜索spring.factories文件,然后在spring.factories文件中查找以org.springframework.boot.autoconfigure.EnableAutoConfiguration为key的值,值是一个列表,列表中记录的是需要进行自动化配置的类会被执行,例如AopAutoConfiguration会自动配置Aop相关配置,使用JDK代理还是CGLIB代理。

那这个自动化配置是如何触发的?

ConfigurationClassPostProcessor类的postProcessBeanFactory方法中调用了ConfigurationClassParser类的parse方法,而ConfigurationClassParser类的parse方法间接调用了AutoConfigurationImportSelector类。这个ConfigurationClassPostProcessor实现了BeanDefinitionRegistryPostProcessor接口,而BeanDefinitionRegistryPostProcessor继承了BeanFactoryPostProcessor接口,熟悉Spring原理的都知道BeanFactoryPostProcessor接口中的postProcessBeanFactory方法会在Spring容器加载bean的定义文件之后,在bean实例化之前执行,而这一步是由SpringApplication的run方法触发的,在这个run方法中实现了Spring容器的启动及初始化。

有些开发者会在pom.xml中继承spring-boot-starter-parent,这样做有什么好处?

通过继承的方式可以很方便的进行依赖版本管理,使用默认的依赖版本,当然也可以更改这些依赖的版本号。继承 spring-boot-starter-parent可以获取以下默认特性: 默认使用Java1.6进行编译; 默认代码编码为UTF-8; 新建项目的pom文件可以省略依赖库的标签,例如添加activemq依赖的时候,可以不写版本号; 恰到好处的资源过滤; 恰到好处的插件配置,如exec插件; 恰到好处的对application.properties和application.yml进行筛选。

Spring Boot中如何实现对不同环境的属性配置文件的支持?

Spring-Boot支持不同环境的属性配置文件切换,通过创建application-{profile}.properties文件,其中{profile}是具体的环境标识名称,例如: application-dev.properties用于开发环境,application-test.properties用于测试环境,application-uat.properties用于uat环境。如果要想使用application-dev.properties文件,则在application.properties文件中添加spring.profiles.active=dev;如果要想使用application-test.properties文件,则在application.properties文件中添加spring.profiles.active=test。

打包部署都手动修改application.properties中spring.profiles.active的值,这个问题如何解决?

一般的做法是在项目路径下建立以环境标识名称为名的目录,然后每个目录下添加各自环境的application.properties属性配置,在自动打包部署的时候将对应的application.properties拷贝到classpath下,这样就实现了配置文件切换。

Spring Boot会自动加载哪些路径下的application.properties?

Spring Boot支持从以下位置加载application.properties文件:当前目录下的/config子目录、当前目录、classpath下的/config包、classpath根路径。

如果这四个路径的application.properties文件中配置了某属性,最终生效的是哪个文件里的?

最终生效的是当前目录下的/config子目录下的application.properties中的配置,覆盖顺序是当前目录下的/config子目录覆盖当前目录,当前目录覆盖classpath下的/config包,classpath下的/config包覆盖classpath根路径。

@SpringBootApplication注解有什么作用?

从@SpringBootApplication注解源码可以看到它具有@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan三个注解的作用。@SpringBootConfiguration注解用于标注Spring应用引导类,在应用启动的时候这个引导类会被执行;@EnableAutoConfiguration注解用于根据依赖自动开启一些配置;@ComponentScan注解用于配置哪些基础包或类被自动扫描。

到此这篇关于为什么使用Spring Boot?的文章就介绍到这了,更多相关使用Spring Boot内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IntelliJ IDEA查看方法说明文档的图解

    IntelliJ IDEA查看方法说明文档的图解

    今天小编就为大家分享一篇关于IntelliJ IDEA查看方法说明文档的图解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • SpringBoot Aop 详解和多种使用场景解析

    SpringBoot Aop 详解和多种使用场景解析

    aop面向切面编程,是编程中一个很重要的思想本篇文章主要介绍的是SpringBoot切面Aop的使用和案例,对SpringBoot Aop相关知识感兴趣的朋友跟随小编一起看看吧
    2021-08-08
  • 为什么说要慎用SpringBoot @ComponentScan

    为什么说要慎用SpringBoot @ComponentScan

    本文主要介绍了为什么说要慎用SpringBoot @ComponentScan,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • ssm实现分页查询的实例

    ssm实现分页查询的实例

    下面小编就为大家带来一篇ssm实现分页查询的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • zookeeper集群搭建超详细过程

    zookeeper集群搭建超详细过程

    这篇文章主要介绍了zookeeper集群搭建超详细过程,本文对zookeeper集群测试通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • SpringMVC @RequestBody属性名大写字母注入失败的解决

    SpringMVC @RequestBody属性名大写字母注入失败的解决

    这篇文章主要介绍了SpringMVC @RequestBody属性名大写字母注入失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • springboot jar包外置配置文件的解决方法

    springboot jar包外置配置文件的解决方法

    这篇文章主要给大家介绍了关于spring boot jar包外置配置文件的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • mybatis双重foreach如何实现遍历map中的两个list数组

    mybatis双重foreach如何实现遍历map中的两个list数组

    本文介绍了如何解析前端传递的JSON字符串并在Java后台动态构建SQL查询条件,首先,通过JSONArray.fromObject()将JSON字符串转化为JSONArray对象,遍历JSONArray,从中提取name和infos,构建成Map对象用于Mybatis SQL映射
    2024-09-09
  • Java常见异常及处理方式总结

    Java常见异常及处理方式总结

    今天给大家带来的是Java的相关知识,文章围绕着Java异常展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringBoot集成RocketMQ的使用示例

    SpringBoot集成RocketMQ的使用示例

    RocketMQ是阿里巴巴开源的一款消息中间件,性能优秀,功能齐全,被广泛应用在各种业务场景,本文就来介绍一下SpringBoot集成RocketMQ的使用示例,感兴趣的可以了解一下
    2023-11-11

最新评论