前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】

杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】

作者头像
杨校
发布2022-12-27 17:05:50
4540
发布2022-12-27 17:05:50
举报
文章被收录于专栏:Java技术分享圈Java技术分享圈

1. 什么是 Spring Boot?

Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用Spring 的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手。

2. 为什么要用SpringBoot

快速开发,快速整合,配置简化、内嵌服务容器

3. SpringBoot与SpringCloud 区别

  1. SpringBoot是快速开发的Spring框架;
  2. SpringCloud 不是一项单独的技术,而是一整套的解决方案的集合,换句话说,也就是SpringCloud是一套系列性的知识体系;
  3. SpringCloud是完整的微服务框架,SpringCloud依赖于SpringBoot。

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

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

  • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项, 例如: java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
  • @ComponentScan:Spring组件扫描,也就是进行扫描Component注解

5.SpringBoot的自动配置原理是什么

  • 主要是Spring Boot的启动类上的核心注解SpringBootApplication注解主配置类,有了这个主配置类启动时就会为SpringBoot开启一个@EnableAutoConfiguration注解自动配置功能。
  • 有了这个EnableAutoConfiguration的话就会:
    • 从配置文件META_INF/Spring.factories加载可能用到的自动配置类
    • 去重,并将exclude和excludeName属性携带的类排除
    • 过滤,将满足条件(@Conditional)的自动配置类返回

6.简单说下@ControllerAdvice和@RestController注解的区别

① 注解@ControllerAdvice是一个组件注解(Component annotation),它允许实现类通过类路径扫描被自动检测到。当使用 MVC 命名空间或者 MVC Java 配置时自动启用 ② @RestController:相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

7.spring boot 核心配置文件是什么?bootstrap.properties 和application.properties 有何区别 ?

  • 单纯做 Spring Boot 开发,可能不太容易遇到 bootstrap.properties 配置文件,但是在结合Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。
  • spring boot 核心的两个配置文件:
    •  bootstrap (. yml 或者 . properties):boostrap 由父 ApplicationContext 加载的,比applicaton 优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在 Spring Cloud 配置就会使用这个文件。且 boostrap 里面的属性不能被覆盖;
    • application (. yml 或者 . properties): 由ApplicatonContext 加载,用于 spring boot 项目的自动化配置

8. SpringBoot多数据源拆分的思路

先在properties配置文件中配置两个数据源,创建分包mapper,使用@ConfigurationProperties 读取properties中的配置,使用@MapperScan注册到对应的mapper包中

9. Spring Boot 中如何解决跨域问题

跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过 (CORS,Crossorigin resource sharing) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,在传统的SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。

代码语言:javascript
复制
@Configuration
public class CorsConfig implements WebMvcConfigurer {
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**")
		.allowedOrigins("*")
		.allowCredentials(true)
		.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
		.maxAge(3600);
	}
}

Spring Security 和 Shiro 各自的优缺点

  • 由于 Spring Boot 官方提供了大量的非常方便的开箱即用的 Starter ,包括 Spring Security 的Starter ,使得在 Spring Boot 中使用 Spring Security 变得更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是 Spring Boot 项目,一般选择 Spring Security 。当然这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有问题的。
  • Shiro 和 Spring Security相比,主要有如下一些特点
    • Spring Security 是一个重量级的安全管理框架;Shiro 则是一个轻量级的安全管理框架
    • Spring Security 概念复杂,配置繁琐;Shiro 概念简单、配置简单
    • Spring Security 功能强大;Shiro 功能简单

作者: 杨校

出处: https://mryang.blog.csdn.net

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档