admin管理员组文章数量:1794759
Spring常见面试题
Java常见面试题_2022最新版
1 | Java基础面试题 | blog.csdn/weixin_46030002/article/details/126399353 |
2 | Java集合容器面试题 | blog.csdn/weixin_46030002/article/details/126425298 |
3 | Java线程面试题 | blog.csdn/weixin_46030002/article/details/126518395 |
4 | Java异常面试题 | blog.csdn/weixin_46030002/article/details/126482778 |
5 | Spring常见面试题 | blog.csdn/weixin_46030002/article/details/127281194 |
6 | SpringMVC常见面试题 | blog.csdn/weixin_46030002/article/details/127057785 |
7 | Mybatis常见面试题 | blog.csdn/weixin_46030002/article/details/126026561 |
8 | MySQL常见面试题 | blog.csdn/weixin_46030002/article/details/126557564 |
9 | Redis常见面试题 | blog.csdn/weixin_46030002/article/details/126435834 |
- Java常见面试题_2022最新版持续更新中…
文章目录
- Java常见面试题_2022最新版
- 一、Spring
- 说说你对 Spring 的理解
- 简述下 IOC,DI
- 简述下 AOP
- AOP是通过什么实现的
- CGLIB代理和JDK代理的区别
- AOP名词
- SpringAOP通知有哪些类型
- Java中动态代理的方式有几种
- @Autowired 和 @Resource 的区别
- DI依赖注入的方式有几种
- @Controller 和 @RestController 的区别
- Spring 常用注解
- Spring中 Bean作用域
- 事务注解以及作用
- 二、SpringBoot
- SpringBoot的好处
- SpringBoot的常用注解
- SpringBoot项目中常用的配置文件有哪些
- SpringBoot 自动配置原理(-)
- Spring、Spring MVC、Spring Cloud、Spring Boot的区别是什么?
- Spring 和 SpringBoot的区别
- 三、其它面试题
- SLF4j日志等级有哪些
一、Spring 说说你对 Spring 的理解
Spring 框架是一个开源免费的、轻量级的、非侵入式的框架。 并且对我们 Bean 的生命周期(实例化 -> 属性赋值 -> 初始化 -> 销毁)进行了管理。 其最主要的作用就是将其他框架进行整合,以一种统一的通用的方法进行管理。 Spring 包含了三大核心,分别是IOC(控制反转),DI(依赖注入),AOP(面向切面)。
简述下 IOC,DI- IOC:控制反转,就是将我们创建及管理对象的权限从我们程序员的手中交给 Spring 框架,这种控制权限的移交我们称之为控制反转。
- DI:依赖注入,Spring 通过 set 方法和构造方法等方式实现了我们的依赖注入,可以理解为依赖注入只是实现控制反转(目的)的一种方式
AOP:面向切面编程,是作为面向对象的一种补充,一般用于那些与主要业务无关,但是却对多个业务产生影响的逻辑或公共行为,抽取并封装为一个可用的模块(方法的扩展),这个模块我们称为 切面 。是为了减少系统中的重复代码,降低模块间的耦合度,同时提高了系统的可维护性。常常用于权限认证、日志、事务处理等。
AOP是通过什么实现的动态代理
CGLIB代理和JDK代理的区别- JDK代理只能对实现接口的类生成代理,JDK代理使用的是反射机制实现AOP的动态代理;
- CGLib是针对类实现代理,对指定的类生成一个子类,并覆盖其中的方法,这种通过继承类的实现方式。 CGLib代理使用字节码处理框架ASM,通过修改字节码生成子类。
- 切面(Aspect) @Aspect
- 由切入点表达式(Pointcut)和 通知方法(Advice)组成
- 它既包含了横切逻辑的定义,也包括了连接点的定义。
- 连接点(Join point)
- 通知(Advice)
- 切入点(Pointcut) @PointCut
- 目标对象(Target Object)
- 前置通知 before() 目标方法执行前
- 后置通知 after() 不管目标方法执行是否正确 都要执行
- 返回通知 afterReturning() 目标方法执行后
- 异常通知 afterThrowing() 目标方法执行抛出异常时执行
- 环绕通知 around(ProceedingJoinPoing) 目标方法执行前后都要执行 功能最强大
- JDK动态代理(要求代理对象 实现与被代理者相同的接口,默认为JDK代理)
- CGLIB动态代理(被代理者有无接口皆可,但是代理对象是被代理者的子类)
- @Autowired 和 @Resource 都是用于注入依赖(装配 Bean),可以写在字段上、setter 方法上或者构造器上;
- @Autowired
- @Autowired 是 Spring 的注解,默认是按照类型进行装配(byType),默认情况下必须要求依赖的对象必须存在,如果想要允许为 null 值,可以设置 required 属性为 false,如:@Autowired(required=false)
- 如果我们想按照名称进行装配(byName),我们可以结合 @Qualifier 注解进行使用;
- @Source
- @Source 是 Java 的注解,默认按照名称进行装配(byName),名称可以通过 name 属性进行指定。当找不到与名称匹配的 bean 时才按照类型进行装配(byType)。
- 但是需要注意的是,如果 name 属性一旦指定,就只会按照名称进行装配,找不到则抛出异常。如果指定了 type 属性,则会通过类型匹配唯一 bean 进行装配,找不到或者找到多个,都会抛出异常。
- 如果同时指定了 name 和 type ,则从 Spring 上下文中找到唯一匹配的 bean 进行装配,找不到则抛出异常。
- setter 方法注入
- 构造方法注入
- 属性注入
@Controller 和 @RestController 这两个注解都是用来修饰控制器 (控制层 --> 接受 http 请求)类的,被它们修饰的类我们会交给我们的 Spring 框架去管理。 @RestController= @Controller + @ResponseBody @Controller 会通过视图解析器默认 认为返回值类型为一个视图(html,jsp ,…)去解析并跳转到对应的页面,如果没有这个视图会返回 404; @ResponseBody 是响应正文,可以使用在类上也可以使用在方法上,这里可以理解为被 @ResponseBody 标注的类或者方法,返回值类型为 json 数据
Spring 常用注解- @ComponentScan
- @Component
- @Controller
- @Service
- @Repository
- @Configuration
- @Scope
- @Lazy
- @PostConstruct
- @PreDestroy
- @Autowired
- @Qualifier
- singleton 常用
- prototype 常用
- request 在 Web 环境下有效
- session 在 Web 环境下有效
- global session 在 Web 环境下有效
- 为单个方法或类上添加事务管理
- 标注事务注解的类,其全部方法都有事务
- 标注了事务注解的方法,默认情况会开启事务,方法中全部功能执行完成以后,自动提交事务,默认情况下,如果方法出现了RuntimeException(含子类型)则会回退事务。
- Spring框架的声明式事务管理是通过Spring面向方面编程(AOP)实现的,底层依赖数据库的事务功能。
二、SpringBoot SpringBoot的好处
- 自动配置
- 约定大于配置
- 提供了很多整合了第三方库的依赖,使得其开箱即用
- 起步依赖
- 提供了测试,安全,监控,健康检查等功能
- @SpringBootApplication
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @SpringBootTest
- @ImportAutoConfiguration
- application.properties
- application.yml
- @EnableAutoConfiguration会读取工厂配置 /META-INF/spring.factories
- 找到标注 @Configuration 的自动配置类
- 自动配置类中使用 @ConditionalXXX 注解,进行条件配置,根据条件初始化Bean组件
- 可以根据属性文件、Bean对象,Bean类型自动配置
- Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。是Spring全家桶的基石。
- Spring MVC是Spring的一个模块,一个web框架。使得开发web应用变得很容易。
- Spring配置复杂,繁琐,所以推出了Spring boot,约定优于配置,简化了spring的配置流程。做到开箱即用。
- Spring Cloud构建于Spring Boot之上,是一个微服务全家桶方案,可以快速搭建微服务应用。
- Spring
- Spring 框架提供了企业软件的各种基础组件,有了这些基础组件的帮助,开发者就可以更多的聚焦在软件的业务功能,大大提升开发效率。
- Spring 的核心功能包括:IoC/DI(依赖注入、控制反转) 和 AOP(面向切面编程)
- Spring 还提供了:事务管理、MVC、测试、数据访问等组件
- SpringBoot
- Spring Boot 是以Spring为基础,帮助快速搭建Spring应用程序。开箱即用,几乎不用配置。
- Spring Boot 提供了统一的依赖管理,可以很少代码就能整合各种资源,包括JDBC、MyBatis等。
- Spring Boot 提供了内嵌服务器、安全、健康检查等开箱即用的功能。
- Spring Boot 还提供了打包工具,可以将应用打成 Fat Jar ,然后一个命令就能启动。
三、其它面试题 SLF4j日志等级有哪些
- trace 追踪信
- debug 调试信
- info 一般信(默认显示级别)
- warn 警告信
- error 错误信
版权声明:本文标题:Spring常见面试题 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686855759a110743.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论