springboot面试题——简化提纯版-备战春招,秋招

0、说一下springboot的优缺点

1)优点 快速构建项目。 对主流开发框架的无配置集成。 项目可独立运行,无须外部依赖Servlet容器。 提供运行时的应用监控。 极大地提高了开发、部署效率。 与云计算的天然集成。 2)缺点 版本迭代速度很快,一些模块改动很大。 由于不用自己做配置,报错时很难定位。 网上现成的解决方案比较少。

1、springboot的常用注解及作用

1:@SpringBootApplication: @SpringBootApplication是springboot中最核心的注解,写在启动类的上面。它是@Configuration、 @EnableAutoConfiguration和@ComponentScan的组合注解。@Configuration指示一个类声明一个或 者多个@Bean 声明的方法并且由Spring容器管理,@EnableAutoConfiguration将SpringBoot中所有符 合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器,@ComponentScan扫描定 义路径下的bean。

2:@RestController: 主要作用于Controller的类上,它是@Controller和@ResponseBody的组合注解,主要用于返回json数 据。

3:@ResponseBody 主要作用于控制层的类上,主要用于返回json数据。 4:@Data2、说一下springboot中@Controller和 @RestController的区别 3、说一下springboot中@ResponseBody和 @RequestBody的区别

4、springboot中application.yml文件和bootstrap.yml 哪个执行的优先级高 主要作用于实体类上,编译后可以自动加上get、set、toString、equals方法等,减少我们实体类代码的 书写,增加可阅读性。

5:@Service 主要作用于业务层上面,就是通常说的service的类上。

6:@RequestMapping 主要作用于Controller类及方法上,主要作用是请求地址的映射,当然,其中还有method属性等,method 属性主要是请求类型,比如post、get等,value = RequestMethod.GET。

7:@Mapper 主要作用于DAO接口上,可以自动生成接口的实现类。

8:@MapperScan 主要作用于启动类上,用于生成DAO接口的实现类,如果DAO接口比较多,推荐使用@MapperScan注解,写法 如@MapperScan("com.example.demo.dao").

9:@Controller 主要作用于控制层类上,用于处理http请求等。

10:@PathVariable 主要是用于取url中的变量的值,比如 @RequestMapping("/student/{studentName}"),那么在对应 的方法入参中可以写成:(@PathVariable String studentName).

11:@RequestParam 将请求参数绑定到Controller的方法上面,@RequestParam(value=”参数名”)

2、说一下springboot中@Controller和 @RestController的区别

在springboot开发中控制层使用注解@Controller时,加有@GetMapping(@PostMapping或 @RequestMapping)注解的方法返回值对应的是一个视图,而使用@RestController返回值对应的是json 数据,而@Controller+@ResponseBody的作用相当于@RestController。

3、说一下springboot中@ResponseBody和 @RequestBody的区别

@RequestBody的作用是将前端传来的json格式的数据转为自己定义好的javabean对象 @ResponseBody的作用是将后端以return返回的javabean类型数据转为json类型数据。

4、springboot中application.yml文件和bootstrap.yml 哪个执行的优先级高

bootstrap 由spring父上下文加载,比application配置文件优先加载,而application配置文件由子 上下文加载 bootstrap加载的配置信息不能被application的相同配置覆盖

5、springboot的自动装配原理

    SpringBoot的自动装配原理:在SpringBoot项目中都会有一起启动类上贴有一个注解叫 @SpringBootApplication,这个注解是一个复合注解,里面有几个注解,其中来实现自动装配的有三个是 @ComponentScan,@SpringBootConfiguration和@EnableAutoConfiguration。

  其中@ComponentScan 主要让启动类赋予扫描功能,做到扫描包路径

  @SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类。                    最后就是@EnableAutoConfiguration这也是自动装配的主要注解也是一个复合注解,主要有两 个注解,在@AutoConfigurationPackage注解中有一个注解@import注解中导入了一个类叫Registrar, 这个类主要用来手动注册bean,这个bean主要用来保存扫描路径到全局变量中主要提供给jpa框架去做查询。      

       还有就是真正的核心:在@import注解中导入一个类叫AutoConfigurationImportSelector这 个类中有一个方法叫selectImports会返回一个字符串数组,这些字符串都是类的全路径名,这些类的全路 径都会被Spring通过反射的方式放到 ioc 容器中交给Spring管理。      

        这些类的全路径名主要都是存放在META-INF/spring.factories中里面存放的数据都是以key, value的形式储存,其中只要找到一个key为EnableAutoContiguration下的value都是类的全路径。         在通过Spring提供的api SpringFactoriesLoader和loadFactoryNames等等配合@import 注解把字符串反射到 ioc 容器中,这些类中标记有Configuration和@Bean的都会加载到 spring.factories中完成自动装配

6、springboot和springcloud区别

1. SpringBoot专注于快速方便得开发单个个体微服务.

2. SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并 管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞 选、分布式会话等等集成服务

3. SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于 依赖的关系.

4. SpringBoot专注于快速、方便得开发单个微服务个体,SpringCloud关注全局的服务治理框架。

你可能感兴趣的:(实用面试题必考,spring,boot,后端,java)