Spring Boot

1、Spring Boot提供了哪些核心功能?(高频)

1、起步依赖

Spring boot将各种场景的依赖包,制作成一个个的starter,我们在项目中只需要引入对应场景的起步依赖,就可以引入该场景所有的依赖包,简化项目引入相关依赖的复杂度。

2、自动配置

只需要在项目中引入起步依赖,spring boot将该场景相关bean交由spring管理,我们只需要在程序中注入对应的bean即可。

3、辅助功能(内嵌tomcat,jar包方式运行,辅助功能)

通过引入spring-boot-maven-plugin插件可以将springboot项目打包成一个可以直接运行的jar包,运行方式和常规jar包一样java -jar xxx.jar,启动后可以直接运行内嵌的web容器,根据具体引入的依赖来确定到底该启动哪种web容器。


2、如何理解springboot的starter(自动装配原理)?(高频)

starter就是一个jar包,在jar包中已经定义好了一些@Configuration配置类、并且在配置类中将bean定义在里面,然后在starter包的META-INF/spring.factories中配置该配置类,springboot项目将来会按照约定来加载该配置类

在项目启动的时候,spring boot框架会自动读取META-INF/spring.factories配置文件中org.springframework.boot.autoconfigure.EnableAutoConfiguration所配置的配置类,然后将其中所定义的bean根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中

开发人员只需要将相应的starter包依赖进应用,进行相应的属性配置(使用默认配置时,不需要配置),就可以直接注入相关的Bean,完成对应的功能,比如mybatis-spring-boot--starter,spring-boot-starter-redis


3、Spring Boot常用的starter有哪些?(高频)

1、spring-boot-starter-amqp(消息队列支持)

2、mybatis-plus-boot-starter(mybatis plus的支持)

3、mybatis-spring-boot-starter(mybatis的支持)


4、Spring Boot的配置文件有哪几种格式?(高频)

Spring Boot支持两种格式的配置文件:

1、application.properties

2、application.yml / yaml

3、xml(不支持)

在实际的项目开发一般的都是使用配置中心管理项目中的配置信息,常见的配置中心:Spring Cloud Config、Nacos


5、如何自定义Spring Boot应用程序的端口号?

方式一:在application.properties或者application.yml文件中添加server.port配置项指定端口

方式二:在启动spring boot项目的时候通过-Dserver.port参数指定项目的端口号

方式三:通过WebServerFactoryCustomizer设置端口号,如下所示


6、Spring Boot如何管理不同环境配置文件?

1、Spring Boot多环境配置:

在Spring Boot中多环境配置文件名需要满足application-{profile}.扩展名的格式,其中{profile}对应你的环境标识,比如:

application-dev.扩展名:开发环境

application-test.扩展名:测试环境

application-prod.扩展名:生产环境

2、激活

  • 方式1:

配置文件的方式,在application.properties或者application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

如:spring.profiles.active=test就会加载application-test.properties配置文件内容

  • 方式2:

命令行方式是一种外部配置的方式,在执行java -jar命令时可以通过--spring.profiles.active=test的方式进行激活指定的profiles列表。

比如:java -jar xxx.jar --spring.profiles.active=dev

  • 方式3:

Java系统属性方式也是一种外部配置的方式,在执行java -jar命令时可以通过-Dspring.profiles.active=test的方式进行激活指定的profiles列表。

比如:java -Dspring.profiles.active=dev -jar xxx.jar


7、Spring Boot有哪几种读取配置的方式?(高频)

1.使用 @Value 注解读取配置文件。

2.使用 Environment 读取配置文件。

3.封装实体类,使用 @ConfigurationProperties(prefix = "") 读取配置文件。


8、如何重新加载Spring Boot上的更改,而无需重新启动服务器?(高频)

使用Spring Boot所提供的devtools工具就可以实现无需重新启动服务器而加载最新的代码。对应的工具的坐标如下所示:

如果使用的是idea开发工具,还需要做如下配置:

由于idea不会自动编译项目,所以源码修改不能被spring-boot-devtools检测到,勾选上面两个选项后idea将在窗口失去焦点时自动编译并替换源码文件。


9、Spring Boot的核心注解是哪个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是Spring Boot的核心注解,主要组合包含了以下3个注解:

1、@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。

2、@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项。

如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

3、@ComponentScan:Spring组件扫描。


10、Springboot的常用注解(高频)

1、读取yml文件|properties

@EnableConfigurationProperties

@ConfigurationProperties:将properties文件中的key/value信息和javabean中的属性绑定

2、condition 条件

@ConditionalOnClass:当classpath下有指定的类,条件才成立;

@ConditionalOnMissBean:当IOC容器中没有指定的bean,常常作为bean的候补;

@ConditionalOnProperties:当在配置文件中配置了相关的信息,条件才成立

3、auto:@SpringBootApplication

1)@Configuration

  • 加了@Configuration注解的类就是工厂Bean

  • 加了@Bean注解的方法就是工厂方法,实例工厂方法,静态工厂方法

  • 工厂方法如果重载,bean的名称一样,只会创建参数最多的那个bean

  • @Configuration类将来会产生代理对象,保证@Bean方法相互调用的时候保证单例性

  • Bean工厂的PostProcessor配置静态方法

  • 配置类依赖注入采用局部变量

2)@Import

  • 引入单个bean

  • 引入配置类,将配置类中所有的对象,放入IOC容器

  • 引入实现了ImportSelector接口的类;只会将接口的返回结果放在IOC容器;

  • 引入实现了ImportBeanDefinitionRegistrar接口的类;只会将接口的返回结果放在IOC容器;

  • 引入实现了DeferredImportSelector接口的类;只会将接口的返回结果放在IOC容器;

3)@EnableAutoConfiguration

  • 打开自动配置的功能,也可以关闭某个自动配置


11、运行Spring Boot有哪几种方式?

方式一:直接通过java -jar xxx.jar的方式运行

方式二:将xxx.jar制作成Docker镜像,然后借助于Docker容器进行运行,并且可以使用docker-compose对多个容器进行统一编排


12、Spring Boot打成的jar和普通的jar有什么区别?

区别:

1、Spring Boot 项目最终打包成的jar是可执行jar,这种jar可以直接通过 java -jar xxx.jar 命令来运行,这种jar不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。

2、Spring Boot 的jar无法被其他项目依赖,主要还是他和普通jar的结构不同。普通的jar包,解压后直接就是包名,包里就是我们的代码,而Spring Boot打包成的可执行jar解压后,在 \BOOT-INF\classes目录下才是我们的代码,因此无法被直接引用。


13、Spring Boot中如何实现定时任务?

在Spring Boot中可以使用两种定时任务框架:

1、Spring Task

2、Quartz

一般在项目中使用Spring Task就可以了,因为Spring Task是Spring框架提供的可以和Spring Boot进行无缝集成。具体的使用方式如下所示:

1、在启动类上使用@EnableScheduling注解开启定时任务支持

2、在指定的方法上使用@Scheduled注解来指定定时任务的执行规则, 如下所示:


14、怎么禁用某些自动配置特性?

如果我们想禁用某些自动配置特性,可以使用 @SpringBootApplication注解的exclude属性来指明。例如,下面的代码段是使 DataSourceAutoConfiguration无效:


15、Spring Boot启动过程(有可能)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值