论spring的江湖地位,那可是一直在java领域是个香饽饽,可谓是如日中天哈!!!它主要是干什么的呢?
Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。
spring的优势
方便解耦,简化开发通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
AOP编程的支持通过Spring的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。
声明式事务的支持可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量。
方便程序的测试可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。
方便集成各种优秀框架Spring可以降低各种框架的使用难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的直接支持。
降低JavaEE API的使用难度Spring对JavaEE API(如JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API的使用难度大为降低。
Java源码是经典学习范例Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。它的源代码无疑是Java技术的最佳实践的范例。
spring的体系结构
注意:
IOC和AOP不是从Spring才有的,在Spring之前已经存在只是偏向于理论化,Spring对这两个思想在技术上发扬光大了。
l IOC的概念IOC:Inverse of Controll(反转控制/控制反转);
我们在一个类需要另外一个类(外部资源),往往自己主动去new(正向);
有了Spring框架,框架帮我们去new,我们问框架要对象
(创建对象权利的一个反转)我们丧失了一个权利(创建对象的权利),但是我们得到了福利(不用考虑对象的创建时机、销毁时机等)l IOC的作用IOC要解决程序耦合问题l 关于程序耦合(有一个认识即可)
耦合:耦合度,体现的是一个影响的问题明白:耦合不能够避免,只能降低耦合 “高内聚、低耦合”麻烦自己、方便别人(对外界影响度的降低)、内聚度过高也不合适(重用性低、投入的编码成本大)
SpringIOC的一些细节知识
使用ApplicationContext启动容器,配置的对象会被立即创建(立即加载模式)保存在对象容器map中;使用BeanFactory启动容器,什么时候getBean需要这个对象,容器再去创建对象(懒加载模式)注意:推荐使用ApplicationContext。官方已经不推荐使用BeanFactory
Bean标签
id:唯一标识符,spring中没有namespace之说,所以要求id本身就不能重复
class :指定实例化对象所属类的全限定类名
scope :指的是对象的使用范围
singleton:单例/单个,默认值。整个系统中这个类只有一个对象,如果bean的scope属性配置为singleton的话,每次getBean获取的都是同一个对象prototype:原型的/多例/多个对象。每次需要对象getBean的时候框架都new一个新的对象给你
request:web应用,对象在同一个request中有效,在一个request中永远是同一个对象
session:web应用,对象在同一个session中有效,在一个session中永远是同一个对象
生命周期属性生命周期:对象从创建到销毁生命周期属性:可以配置一些执行逻辑,在对象创建之后立马干点啥,在对象销毁之前立马干点啥。
init-methoddestory-method
(代码在本地!!!需要嘀嘀作者)
最后介绍一下创建对象的三种方法:
- 通过配置class全限定类名框架底层使用反射技术来创建对象(经常使用,推荐)
- 动态方法(自己new对象,然后加入到Spring的对象容器中管理)(需要首先定义工厂的bean,然后通过工厂bean对象调用里面的方法返回具体对象)
- 静态方法(自己new对象,然后加入到Spring的对象容器中管理)
自定义拦截器的使用和SSM整合(每步详细步骤)2020-11-17
(代码每步加注释)整合Spring和SpringMVC2020-11-18
END如果看到这里,说明你喜欢这篇文章,请 转发、点赞。同时本公众号可以第一时间接受到博文推送。