学习Spring的目的
1)方便解耦,简化开发
Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。
2)方便集成各种优秀框架
Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。
3)降低 Java EE API 的使用难度
Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。
4)方便程序的测试
Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。
5)AOP 编程的支持
Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。
6)声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无须手动编程。
大致可以分成两大类 可扩展性:1、2、4、5 。封装性:3、6
所以对原来的EJB的应用程序的很多api的封装性以及spring的本身的易扩展性使得spring在IT的历史进程中发挥着举重若轻的作用。
那么我们为什么要学习呢。学习spring对我们来说有什么实际的用处呢。不是都封装好了吗拿来用就好了呀!
不然,spring他的扩展性为什么那么强,一来因为他的各个类的设计理念里面蕴含了各种设计模式的实际应用。
对我们在实际系统应用架构的设计中有着实际的指导作用。二来他的代码风格简洁清晰。为我们养成良好的编码习惯有着潜移默化的作用。
三来了解学习spring的内部运行机制是我们跳槽面试有利的装比利器。所以学习同志们一起加油吧!
Spring是什么
首先Spring是一个十分庞大的体系,具体可以访问它的官网https://spring.io/projects进行详细了解。
着重介绍SpringFramework这个项目,它是一个开源的Java/JavaEE全功能栈的应用程序,SpringFramework提供了一个简易的开发方式,这种开发方式可以避免使用那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
Spring的这种低侵入式设计使代码的污染极低。
SpringFramework包括以下部分:
1.数据获取层面:jdbc、orm、oxm、jms、transactions
jdbc、orm 、jms、transactions 都了解就不多说了。
oxm:全称是object xml mapping 简单点来说就是xml和pojo的一个转化的桥梁(https://blog.csdn.net/Denker2012/article/details/9134659)
2.web层面 servlet 、websocket、web、Portlet。
3.Aop、Aspects、Instrumemention、Messaging
instrumemention:利用java.lang.instrument(容器类) 做动态 Instrumentation(执行容器) 是 Java SE 5 的新特性。
使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。
这个功能为虚拟机监控提供了支撑。简单点来说就是可以修改jvm底层的类。(https://www.cnblogs.com/dongguangming/archive/2020/05/30/12990664.html)
4.Beans、Core、Context、SPEL
Core:Javacore,也可以称为“threaddump”或是“javadump”,它是 Java 提供的一种诊断特性,能够提供一份可读的当前运行的 JVM 中线程使用情况的快照。即在某个特定时刻,JVM 中有哪些线程在运行,每个线程执行到哪一个类,哪一个方法(https://blog.csdn.net/chenghaitao111111/article/details/78490242)
Context: context就是“容器”,放的就是应用程序的所有资源,要用时候就访问它,所以context里面的东西,在同一个应用程序里面是全局的。
5.Test
Spring的特点
IOC和 AOP简单来说就是中央集权+万物皆可切入