Spring5新特性简述及经典的高频面试题分析

7 篇文章 0 订阅
3 篇文章 0 订阅

流行词:Spring5 特性 面试题

参考代码:https://gitee.com/li-lixiang/lean-spring-2.0.git

在前面的blog中,已经实现Spring IOC、DI、MVC和AOP,并学习了Spring的数据访问。本次学习Spring5的新特性以及高频面试题。

Spring5新特性

1)升级JDK8,J2EE 7

2)反应是的编程

3)全面支持注解编程

4)支持函数式编程

5)全面支持REST风格配置

6)对HTTP2.0全面支持

7)Kotlin和Spring WebFlux

8)可以直接用Lambda表达式来注册Bean

9)Spring Web MVC全面罪行的Servlet API

10)JUnit 5 直接执行并发测试

11)丢弃Hibernate3/4,只支持Hibernate5,对Portlet、Veloctiy、XMLBeans、JDO、Guava终止支持

12)Spring核心容器做了一些更新@Nullable、Logback

 

面试题

1、使用Spring框架能给我们带来哪些好处?

简化开发

DI:依赖关系一目了然

IOC:管理好系统中的Beans

万能胶:兼容成熟的框架Hibernate、Mybatis、Quartz、Timer、Shiro、Data

模块化设计:即插即用,按需分配

自带测试组件:JUnit

Web MVC:过度设计嫌疑(Struts Action)、完美分离了Servlet和普通Bean

生命是事务:自然将非功能性代码和功能性代码分离,提出了事务管理提前声明

2、BeanFactory和ApplicationContext有什么区别?

ApplicationContext是BeanFactory的子接口

getBean();关键方法

1)IOC容器中的Bean的监控,生命周期

    PostProcessor

    Aware

    ApplicationEvent

    ContextRefreshEvent

    ContextStartedEvent

    ContextStoppedEvent

    ContextClosedEvent

    RequestHandleredEvent

    InitAware

2)支持国际化i18n

3)拓展了统一资源文件读取方式URL

    可以是本地URL,也可以是网络URL:ClassPathXmlApplicationContext

    FileSystemXmlApplicationContext

    XmlWebApplicationContext 加载网络文件

    AnnotationConfigApplicationContext通过注解配置

3、请解释Spring Bean的生命周期

1)InitializingBean和DisposableBean用来回调

2)Aware接口

3)init()、destroy()

4)@PostConstruct和@PreDestroy注解方式

4、Spring Bean各作用域之间的区别?

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

Spring Bean 命各有长短

规定了有5中寿命

1)什么时候用,什么时候生,用完就死了(prototype),5岁

2)我从容器启动就从石头缝蹦出来,知道Spring的世界末日才灭亡(singleton),100岁

3)request出生的时候就出生,request销毁的时候就销毁(request),10岁

4)session出生的时候就出生,session销毁的时候就销毁(session),20岁

5)global-session Context,80岁

5、Spring中的Bean是线程安全的吗?

Spring Bean是由IOC容器来创建,创建的对象是谁写的?

自己写的

BeanDefinition

BeanWrapper    instance    Class.newInstance();    new Object();

Map<String,BeanWrapper> 顶多就是做了一次代理,用一个新的类代替了原来的类

Bean的线程跟我们写的代码有关系,跟Spring无关

6、请问Spring中用到了哪些设计模式?

 

7、Spring是怎样处理循环依赖的?

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

BeanWrapper

 

8、在service层中如何获取到applicationContext?

实现ApplicationContextAware接口

 

架构师要打到什么水平就可以出去面试?

1、Java基础扎实:精通多线程编程,熟悉分布式,缓存,消息队列等机制,熟悉JVM,包括内存模型、类加载机制以及性能优化;

2、对各种开源的框架如Spring、Hibernate等有深入的了解,对框架本身有过开发或者重构者优先考虑;

3、具备良好的识别业务关键需求和设计领域模型的能力

4、软技能ok

5、有大型分布式项目经验

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值