1. 关于J2EE
要说到Spring的历史起源,首先咱们要说说J2EE这个玩意儿。相信很多学习Java的小伙伴都会觉得很熟悉,毕竟我们学习Java第一天,老师就给我们介绍J2EE了,知道这是Java中的企业版本!
J2EE在1999年和2000年的时候开始得到广泛实现,在J2EE中提出了”事务管理“等核心中间层标准化的概念,但是在实践中出现了各种问题,尤其是开发效率,开发难度和实际的性能都达不到预期。
2. 关于EJB这个框架
那时候开发J2EE基本都是使用EJB这个框架,当然现在EJB这玩意都是老古董了,早都被扔到粪堆里去了。但是当时没有那么多的框架,只能用这种老东西。
当时使用EJB开发J2EE应用的人,在开始的学习和使用EJB的时候,那真实一言难尽,苦不堪言,要学的东西太多了,而且也非常的难用。因为EJB要严格地实现各种不同类型的接口,项目中就会有大量重复的代码。然后项目中的配置文件也特别的复杂和单调。
正是因为EJB这个东西,又难学有难用,开发效率也不高,耗费的资源也多,你说这样的一个东西能有多少人用?所以当时就有很多的人盼着能不能出现一个更好用的框架来解决这些存在的问题。
3. Spring应运而生
后来,终于出来了一个新的框架,可以解决EJB存在的那些问题,而且使用起来简单的一匹!
这就是Spring!正如这个框架的名称Spring一样应景,春天来了!
Spring是由Rod Johnson创建开源框架,它提供了一整套完善的开发环境,可以为POJO(Plain Ordinary Java Object)对象提供企业级的服务,大大简化了JavaEE的企业级应用开发。
Spring把使用接口的复杂度几乎降低到了零,更多地强调面向对象的设计原则,而且尽量减少不必要的异常捕捉。Spring不会和现有的解决方案去进行竞争,而是致力于将它们融合在一起。
总之可以这么说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
4. Spring框架构成
Spring一点点发展,从Spring1.x,到现在即将面世的Spring6.x,逐步形成了几大核心功能,这些核心功能主要由7个主要的模块组成,如下图所示:
接下来 壹哥 带各位简单了解一下Spring各个版本,我们简单来了解一下其发展历程。
二. Spring1.x 时代
先来个Spring1.x版本的jar包图片,如下:
1. 功能
1.x时代的Spring把所有的功能都集中在一个项目中,包含了核心的IoC、AOP,也包含了其他一些比如JDBC、Mail、ORM、事务、定时任务、Spring MVC等功能。
2. 优点
支持基于XML的配置;
支持依赖注入与声明式事务。
3. 缺点
只支持基于XML的配置,而且通过xml文件来配置bean,当项目不断扩大的时候,需要将xml配置信息分放到不同的配置文件中,因此需要频繁的在java类和xml配置文件中切换。
三. Spring2.x 时代
再来看看Spring2.x版本的jar包图片,如下:
1. 特点
同时支持注解与xml。应用程序的基本配置用xml,比如数据源、资源文件等;业务代码的开发用注解,比如Service中注入bean等。
2.优点
随着JDK1.5开始支持注解,Spring 2.x也增加了对注解的支持。因此可以使用注解对Bean进行声明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。
四. Spring3.x 时代
然后看看Spring3.x版本的jar包图片,如下:
1. 特点
从Spring3.x开始提供了基于Java类的配置方式,如@Configuration和@Bean的出现。
@Configuration作用于类上,相当于一个xml配置文件;
@Bean作用于方法上,相当于xml配置中的,至此注解慢慢的取代了xml配置。
2. 优点
使用Java类的配置方式可以更好的理解你配置的Bean,现在一般都推荐使用Java类的配置的方式。
五. Spring4.x 时代
1. 特点
到了Spring4.x时代,出现了比较多的新特性,如下:
Spring 4.x全面支持JDK8.0;
支持Lambda表达式;
支持@Scheduled和@PropertySource重复注解;
提供了空指针终结者Optional;
最后
面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典
- Java核心知识整理
Java核心知识
- Spring全家桶(实战系列)
- 其他电子书资料
Step3:刷题
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
tep3:刷题**
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
以下是我私藏的面试题库:
[外链图片转存中…(img-9rGB2NB6-1714727319334)]