1.谈谈你对springBoot的理解
一种一站式解决方案,简化了spring繁重的配置,
提供了各种启动器,让开发者更好上手。
2.为什么使用springBoot或springBoot的优点
(1)版本锁定: 解决maven依赖版本冲突问题
(2)起步依赖: 解决jar过多问题
(3)自动配置: 解决配置文件过多问题
(4)内置tomcat: 通过内置tomcat,不需要其他外置tomcat,也能运行javaEE。
3. springBoot与springCloud 区别
SpringBoot是快速开发的Spring框架,SpringCloud是完整的微服务框架,SpringCloud依赖于SpringBoot。
4.springBoot的核心配置文件有哪些,作用是什么
application 和 bootstrap 配置文件。
application: 用于项目的自动化配置。
bootstrap: 一些不能被覆盖的属性和加密或解密的场景。比application要先加载。
5.springBoot配置文件有几种类型,区别是什么
.yml和.properties
区别主要是书写方法不一样,.properties加载优先级大于.yml。
server.port = 8088 //.properties方式
server: //.yml方式
port:8088
6.什么是热部署?springBoot怎么实现热部署
热部署: 修改代码不需要重启,就可以实现编译并部署到服务器上。
(1)在开发时修改代码不需要重启服务,节省了时间。
(2)部署在服务器上的程序,可以在不停止的情况下进行升级。
①使用devtools。在配置文件中把devtools.restart.enabled 设置为 true。每次都需要build一下才行。
②idea设置实现热部署。
7.什么是 JavaConfig?
JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法,有助于避免使用 XML 配置。
8.Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的或介绍一下
@SpringBootApplication 注解
@SpringBootApplication:包含了三个注解。
①SpringBootConfiguration: 实现了@Configuration注解,实现配置文件的功能。
②@EnableAutoConfiguration: 打开自动配置的功能,也可以关闭某个自动配置的选项, 例
如: java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
③@ComponentScan: Spring组件扫描。
9.springBoot的启动器starter
可以通过启动器去集成其他技术:web、redis、mybatis等。
在pom配置 spring-boot-starter-web,就可以进行web开发。
原理:会加载这些配置类,放进spring容器中,就可以从容器中获取这些类。
10.springBoot项目的启动方法
11.如何在 Spring Boot 启动的时候运行一些特定的代码?
可以实现接口 ApplicationRunner或者 CommandLineRunner,这两个接口实现方式一样(项目启动完成后执行) ,它们
都只提供了一个 run 方法,在run方法写你的业务逻辑。
12.springBoot的全局异常处理
@ControllerAdvice:开启了全局异常的捕获。然后自定义一个方法使用@ExceptionHandler注解然后定义捕获异常的类型即可对这些捕获的异常进行统一的处理。
@ControllerAdvice
public class ExceptionUtil{
@ExceptionHandler(value =Exception.class)
@ResponseBody
public String exceptionHandler(Exception e){
System.out.println("全局异常捕获:"+e);
return "全局异常捕获,错误原因:"+e.getMessage();
}
}
13.spring Boot常用注解
@SpringBootApplication: SpringBootConfiguration配置类、componentScan扫描包、EnableAutoConfiguration导入其他配置类
@RestController: @ResponseBody和@Controller的作用。
@Component,@Service,@Controller,@Repository: 将类注入容器。
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping: 映射请求,只能接收的对应的请求。
@AutoWired: 按照类型匹配注入。
@Qualifier: 和AutoWired联合使用,在按照类型匹配的基础上,在按照名称匹配。
@Resource: 按照名称匹配依赖注入。
@Bean: 用于将方法返回值对象放入容器。
@RequestParam: 获取查询参数。即url?name=这种形式
@RequestBody: 该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求。@PathVariable: 获取路径参数。即url/{id}这种形式。
@Value: 将外部的值动态注入到 Bean 中。
@Value(“${}”):可以获取配置文件的值。
@Value(“#{}”):表示SpEl(Spring Expression Language是Spring表达式语言,可以在运行时查询和操作数据。)表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。
14. Spring Boot 中的监视器是什么?
15 .如何在自定义端口上运行 Spring Boot 应用程序?
16 .什么是 YAML?
17 如何实现 Spring Boot 应用程序的安全性?
18 .如何使用 Spring Boot 实现异常处理?
19. SpringBoot需要独立的容器运行?
20. application.properties和application.yml文件可放位置?优先级?
这些配置文件可以放在以下位置(按优先级从高到低排序):
项目根目录下的config子目录中:
项目根目录下:
classpath的config包内:
在Maven或Gradle等构建工具中,这通常指的是src/main/resources/config目录。
classpath的根目录下:
在Maven或Gradle等构建工具中,这通常指的是src/main/resources目录。