0
点赞
收藏
分享

微信扫一扫

奈学教育-P8百万 Java架构师3期

download:​​奈学教育-P8百万 Java架构师3期​​

为什么要运用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 Initializ

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注解用于配置哪些根底包或类被自动扫描。


举报

相关推荐

0 条评论