spring 面试题
-
Spring 是什么
-
家族生态,比较常见的就是springboot ,springcloud等
-
是轻量级的,开源的framework 框架
-
spring是一个IOC 和AOP 的容器框架
-
-
spring的优缺点
-
优点:有IOC ,AOP,声明事务,集成的能力,spring是单例模式,如果想修改为多例,通过scope
-
IOC:集中管理对象,对象和对象之间的耦合度降低
-
AOP:不修改代码的情况下,对业务逻辑进行增强,减少重复代码
-
事务:提高开发效率,只需要一个简单的注解@Transactional
-
集成:集成了很多优秀的三方框架
-
spring底层的实现,反射,设计模式都是值得我们学习的
-
-
缺点:因为大而全,上层越简单底层源码越复杂,扩展的越多;配置文件很复杂
-
-
Spring IOC 容器,有什么作用?优点
-
控制反转,对象创建的控制权由开发人员转变为spring 的Ioc创建,如果需要使用呢,通过DI依赖注入@Autowired(自动注入),就可以使用bean。因为开发人员创建的对象耦合度高,维护成本高。
-
优点:集中管理对象,方便维护;降低耦合度。
-
-
spring IOC的实现机制?(关键技术点 工厂的设计模式 + 反射)
-
简单工厂模式:BeanFactory的getBean()
-
反射:类的路径
-
-
IOC 和 DI
-
ioc 是一种思想的实现。将对象的创建权利交给了spring 容器,减少耦合
-
DI是实现IOC的重要一环节,对象创建之后得引入呀,就是听过DI。
-
-
紧耦合 和 松耦合
-
面向对象的三大特性,五大原则:单一职责,接口分离原则,依赖倒置原则
-
想几个例子,鼠标焊在主板上;鼠标的接口和键盘的接口,;
-
-
BeanFactory
-
是spring 的顶层的核心api接口
-
生产bean
-
实现了简单的工厂模式,通过调用getBean传入标识(入参),生产一个bean
-
是bean的容器
-
-
BeanDefination
-
-
存储bean的定义信息,决定bean的生产方式,比如 scope = singlesingleton,lazy = false,后续BeanFactory根据这些信息生产bean
-
-
BeanFactory 和ApplicationContext
-
BeanFactory 的 getBean 用于生产bean。
-
ApplicationContext 实现了BeanFactory,他不生产bean,而是通过BeanFactory生产bean,getbean是一个门面方法 。会自动帮我们把我们配置的bean 注册进来,做的事情更多~(可以理解为4s店)
-
共同点:都可以作为容器,管理bean的生产周期
-
-
Spring IOC容器的加载过程 (bean的创建过程)
-
创建一个上下文的时候就开始加载IOC :new ApplicationContext()
-
概念态:为bean配置,调用invokeBeanFactoryPostProcess(bean工厂的后置处理器),到达定义态
-
定义态:类配置的定义信息@component,读取到beanDefination对象 ,一个map结构
-
纯净态(还没有依赖注入DI):通过反射生产对象,生产之前要进行验证,不是懒加载,是单例,不是抽象,立马生产,(去容器中看看有没有生产过了,已经有了直接拿),实例化完成。不是完整的bean
-
成熟态:属性注入,DI
-
-
Spring bean 和 对象的区别
-
Spring bean:被spring IOC容器管理的对象就是bean。bean一定得是springIOC实例化的
-
javabean对象:是自己实例出来的
-
-
配置bean有哪几种方式?
-
Xml
-
注解 @component (controller,service,repostory)
-
javaconfig的@bean
-
@import
-
-
bean的作用域?(5个)
-
scope:单例singlelon(默认),多例protocle,request(必须是web应用) session(web应用),application
-
-
单例bean的优势
-
减少内存消耗,提升性能
-
减少jvm垃圾回收
-
-
spring的bean的线程安全么
-
如果类中声明变量,有读写时,线程不安全,但是如果声明在方法中,无状态的又是线程安全的
-
当然很少对变量,又读又写
-
-
spring 如何处理线程并发?
-
声明为多例
-
将成员变量放到ThreadLocal中
-
同步锁synchronized,会影响吞吐量
-
第一个是spring控制的,2,3,4 程序员控制更灵活
-
什么是bean装配,什么是bean自动装配(注入)
-
在实际的项目中很少使用自动装配功能
-
推荐手动装配@autowired,先根据类型再根据名字
-
-
自动装配的方式有几种?
-
-
no,默认不进行自动装配,通过ref属性进行装配bean,或者通过@autowired 注解
-
Byname
-
byType
-
原文地址:https://blog.csdn.net/qq_35720068/article/details/142939636
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!