使用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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • prometheus监控springboot应用简单使用介绍详解

    对于springboot应用,需要以下几个步骤 springboot应用开启endpoint,添加actuator的以来和promethus的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> &

  • spring boot项目application.properties文件存放及使用介绍

    一.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会略有不同,我可以根据这个创建多份配置文件,由主配置文件来控制读取那个子配置 创建spring boot项目后可以同时创建多个.properties文件,只要符合它要求的格式即可 格式:application-{profile}.properties:{profile}是变量用于自定义配置文件名称 分别创建三个应用环境的配置和一个主配置 1.application.properties 主配置(以下

  • 使用SpringBoot配置https(SSL证书)

    目录 SpringBoot配置https(SSL证书) 仅需三步 1.把tomcat目录里面的.jks文件 2.配置application.yml 3.接下来是重定向 SpringBoot 改造成https访问 1.生成密钥证书 2.将生成的密钥证书拷贝到项目中的resource中 3.修改项目配置文件application.properties 4.启动项目,直接访问项目即可 SpringBoot配置https(SSL证书) 最近在做微信小程序,https是必须条件 仅需三步 SpringBo

  • 使用Spring Boot的原因解析

    为什么要使用Spring Boot? 在使用Spring框架进行开发的过程中,需要配置很多Spring框架包的依赖,如spring-core.spring-bean.spring-context等,而这些配置通常都是重复添加的,而且需要做很多框架使用及环境参数的重复配置,如开启注解.配置日志等.自动配置:spring boot能够根据当前类路径下的类,jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置.无代码生成和XML配

  • Spring Boot使用FastJson解析JSON数据的方法

    个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析呢? 1.引入fastjson依赖库: <!--添加fastjson解析JSON数据--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <versio

  • Spring Boot全局异常处理解析

    本文为大家分享了Spring Boot全局异常处理,供大家参考,具体内容如下 1.后台处理异常 a.引入thymeleaf依赖 <!-- thymeleaf模板插件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>

  • Spring Boot 部署过程解析(jar or war)

    前言 对于传统的 ssm 或者 ssh 项目的部署,一般会打包成war包,或者是一个编译好的文件夹,再放到 tomcat 的 webapps 目录下,如果是 war 包,会自动解压出来.而 Spring Boot 默认会内嵌一个 Tomcat,因此即便是 web 项目也可以直接打包成 jar 包,直接 java -jar 运行就可以了. 用 Spring Initialzr 创建的 web 项目(选择打包成 jar),只会有一个 spring-boot-starter-web 依赖. <depe

  • Spring Boot RabbitMQ 延迟消息实现完整版示例

    概述 曾经去网易面试的时候,面试官问了我一个问题,说 下完订单后,如果用户未支付,需要取消订单,可以怎么做 我当时的回答是,用定时任务扫描DB表即可.面试官不是很满意,提出: 用定时任务无法做到准实时通知,有没有其他办法? 我当时的回答是: 可以用队列,订单下完后,发送一个消息到队列里,并指定过期时间,时间一到,执行回调接口. 面试官听完后,就不再问了.其实我当时的思路是对的,只不过讲的不是很专业而已.专业说法是利用 延迟消息 . 其实用定时任务,确实有点问题,原本业务系统希望10分钟后,如果订

  • Spring Boot启动过程完全解析(二)

    上篇给大家介绍了Spring Boot启动过程完全解析(一),大家可以点击参考下 该说refreshContext(context)了,首先是判断context是否是AbstractApplicationContext派生类的实例,之后调用了强转为AbstractApplicationContext类型并调用它的refresh方法.由于AnnotationConfigEmbeddedWebApplicationContext继承自EmbeddedWebApplicationContext,所以会

  • Spring boot中自定义Json参数解析器的方法

    一.介绍 用过springMVC/spring boot的都清楚,在controller层接受参数,常用的都是两种接受方式,如下 /** * 请求路径 http://127.0.0.1:8080/test 提交类型为application/json * 测试参数{"sid":1,"stuName":"里斯"} * @param str */ @RequestMapping(value = "/test",method = Re

  • Spring Boot Logback配置日志过程解析

    这篇文章主要介绍了Spring Boot Logback配置日志过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 出于性能等原因,Logback 目前是springboot应用日志的标配: 当然有时候在生产环境中也会考虑和三方中间件采用统一处理方式. 配置时考虑点 支持日志路径,日志level等配置 日志控制配置通过application.yml下发 按天生成日志,当天的日志>50MB回滚 最多保存10天日志 生成的日志中Pattern自

  • spring boot基于DRUID实现数据源监控过程解析

    这篇文章主要介绍了spring boot基于DRUID实现数据源监控过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 随着需求和技术的日益革新,spring boot框架是越来越流行,她也越来越多地出现在我们的项目中,当然最主要的原因还是因为spring boot构建项目实在是太爽了,构建方便,开发简单,而且效率高.今天我们并不是来专门学习spring boot项目的,我们要讲的是数据源的加密和监控,监控到好说,就是不监控也没什么问题,但

  • Spring Boot日志的打印与持久化详细解析

    目录 1. 日志有什么用 2. 日志怎么用 3. Spring Boot 自定义日志的打印 3.1 先获取到打印日志对象 3.2 使用日志对象打印日志 3.3 日志格式说明 4. 日志级别 5. 日志持久化(将日志永久的保存到磁盘的某个位置) 设置日志的保存路径 6. 更简单的日志输出—lombok 6.1 添加 lombok 到当前项目 6.2 使用 @Slf4j 得到日志对象 log 总结 1. 日志有什么用 日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你

随机推荐