spring 经典的高频面试题

网友投稿 680 2022-11-18

spring 经典的高频面试题

spring 经典的高频面试题

文章目录

​​1.使用spring框架能给我们带来的好处​​

​​2.BeanFactory和ApplicationContext区别​​

​​2.1.ApplicationContext是BeanFactory子接口​​​​2.2.ApplicationContext提供IOC容器中的Bean监控​​​​2.2.ApplicationContext支持国际化i18n​​​​2.3.ApplicationContext拓展了统一资源文件读取方式URL​​

​​3.Spring Bean的生命周期​​​​4.Spring Bean各作用域的区别​​

​​4.1.singleton​​​​4.2.prototype​​​​4.3.request​​​​4.4.session​​​​4.5.global-session​​

​​5.Spring的Bean是线程安全的吗?​​​​6.Spring中用到了哪些设计模式?​​​​7.Spring是如何处理循环依赖的?​​​​8.Service层如何获得ApplicationContext​​​​9.如何理解上下文​​

1.使用spring框架能给我们带来的好处

1.1.简化开发

1.简化程序员的开发,简化业务开发

1.2.DI 依赖关系,一目了然

能够从配置文件,可以看出对象与对象的依赖关系,一目了然

1.3.IOC

1.在有限的内存,有限的资源情况下,能够管理好Bean;2.分阶段,分层次帮忙管理

1.4.万能胶

1.能够兼容成熟的框架: Hibernate、MyBatis、Quartz[定时器]、Timer[JDK的]、Shiro、Spring Data,redis,MongoDB等等

1.5.模块化设计

1.即插即用,按需分配,需要啥用啥

1.6.自带测试组件:JUnit,Spring Test

1.7.Spring Web MVC

1.之前的Struts等有过度设计的嫌疑;2.Spring MVC 完整分离了Servlet和普通Bean

如:

@GetMapping("/preview.json") @ResponseBody public Flux preview(HttpServletRequest request, HttpServletResponse response){ return null; }

没有必要一定是HttpServletRequest 和 HttpServletResponse

如下面:

@GetMapping(value="/getByName.json") @ResponseBody public Mono getByName(@RequestParam String name){ Member member = new Member(); member.setName(name); return Mono.justOrEmpty(member); }

2.BeanFactory和ApplicationContext区别

2.1.ApplicationContext是BeanFactory子接口

2.2.ApplicationContext提供IOC容器中的Bean监控

1.这里的监控主要是指Bean的生命周期:Bean创建 销毁等等;

下面的了解即可 PostProcessor机制 Aware 举例

|所有bean被销毁的时候触发 RequestHandleredEvent web容器请求结束的时候触发

2.2.ApplicationContext支持国际化i18n

2.3.ApplicationContext拓展了统一资源文件读取方式URL

1.这里的Url 可以是一个本地URL,也可以是一个网络URL2.三种形式: ClassPathXmlApplicationContext:处理本地classpath下面的所有的配置文件的IOS容器 FileSystemXmlApplicationContext:处理文件系统在其他磁盘下的Url XmlWebApplicationContext:加载网络文件的配置信息3.另外AnnotationConfigApplicationContext:加载注解

3.Spring Bean的生命周期

1、初始化的时候回调调用:InitializingBean和DisposableBean用来回调2、Aware接口3、init() destory()4、@PostContruct 和 @PreDestory注解方式

4.Spring Bean各作用域的区别

1.总共5个范围:对象什么时候创建,什么时候销毁

4.1.singleton

1.我从容器启动就从石头缝里蹦出来,直到Spring的世界末日才灭亡

4.2.prototype

1.什么时候用,什么出生,用完就死了

4.3.request

1.request出生的时候就出生,request销毁的时候就销毁(request)2.这个属于web层3.用户发起请求的时候就有了,用户拿到结果的时候就销毁了4.对于单一的请求,你可以认为是单例,但是对于spring请求中,每个又不一样,可以认为是多例;

4.4.session

1.session出生的时候就出生,session销毁的时候就销毁(session)

4.5.global-session

1.可以理解为上下文Context;一个全局的web容器

总结:5中作用域的长短[用时间长短去比较]

100岁:singleton80岁:global-session Context20岁:session10岁:request1岁: prototype

5.Spring的Bean是线程安全的吗?

1.Spring Bean 由IOC容器来创建;2.创建的对象时用我们开发人员自己写的3.定义 BeanDefinition BeanWarpper instance Class.newInstance(); new Object();4.Map 顶多就是做了一次代理,用一个新的类代替了原来的类 跟我们写的代码有关系,跟Spring无关, 自己写的是不是线程安全,那就是线程安全的, 如果写的代码不是安全的,那就不是线程安全的;

6.Spring中用到了哪些设计模式?

7.Spring是如何处理循环依赖的?

class A 依赖,class B,Class B 依赖Class A;

用缓存机制来解决循环依赖的问题 BeanWrapper

A在加载的时候,发现B还没有实例化,会缓存在BeanWrapper中,等有了之后

8.Service层如何获得ApplicationContext

推荐接口ApplicationContextAware

实现即可

9.如何理解上下文

作用域问题 所处的运行环境; Tomcat

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot实现配置文件的替换
下一篇:springboot多模块中的共用配置文件详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~