Spring概述
起因:重新学习spring,虽然每天都在⽤,但却并不是很了解他,甚⾄说是不怎么了解,只是⽤⼀些基本的东西,在遇到问题的时候,按照常规思路去解决,或者去百度,
这当然是⼀个⽅法,但终究不是 长久之道,重新学⼀下spring,对⾯试,对⾃⼰都是很好的。
spring概述
⾯对spring学习,最简单,最直接地⽅法就是⾯向问题学习,⾸先,抛出以下⼏个问题:
什么是spring?
Spring框架的设计⽬标,设计理念,和核⼼是什么
Spring的优缺点是什么?
Spring有哪些应⽤场景
Spring由哪些模块组成?
Spring 框架中都⽤到了哪些设计模式?
详细讲解⼀下核⼼容器(spring context应⽤上下⽂) 模块
Spring框架中有哪些不同类型的事件
Spring 应⽤程序有哪些不同组件?
使⽤ Spring 有哪些⽅式?
接下来对其进⾏⼀个个的解析:
1.什么是spr ing?
是什么?
Spring是⼀个轻量级Java开发框架,⽬的是为了解决企业级应⽤开发的业务逻辑层和其他各层的耦合问题。
它是⼀个分层的JavaSE/JavaEE full-stack(⼀站式)轻量级开源框架,为开发Java应⽤程序提供全⾯的基础架构⽀持。
Spring负责基础架构,因此Java开发者可以专注于应⽤程序的开发。
解决了什么问题?
Spring最根本的使命是解决企业级应⽤开发的复杂性,即简化Java开发。
Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核⼼特性,也就是依赖注⼊(dependency injection,DI)和⾯向切⾯编程(aspect-oriented programming,AOP)。
如何解决的这些问题?
为了降低Java开发的复杂性,Spring采取了以下4种关键策略
1. 基于POJO的轻量级和最⼩侵⼊性编程;
2. 通过依赖注⼊和⾯向接⼝实现松耦合;
3. 基于切⾯和惯例进⾏声明式编程;
4. 通过切⾯和模板减少样板式代码。
总结
2.Spring框架的设计⽬标,设计理念,和核⼼是什么?
Spring设计⽬标:
Spring为开发者提供⼀个⼀站式轻量级应⽤开发平台;
Spring设计理念:
在JavaEE开发中,⽀持POJO和JavaBean开发⽅式,使应⽤⾯向接⼝开发,充分⽀持OO(⾯向对象)设计⽅法;Spring通过IoC容器实现对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给IoC容器,实现解耦;
POJO和JavaBean的区别:POJO其实是⽐javabean更纯净的简单类或接⼝。POJO严格地遵守简单对象的概念,⽽⼀些JavaBean中往往会封装⼀些简单逻辑。
Spring框架的核⼼:
IoC容器和AOP模块。通过IoC容器管理POJO对象以及他们之间的耦合关系;通过AOP以动态⾮侵⼊的⽅式增强服务。
总结
IoC让相互协作的组件保持松散的耦合,⽽AOP编程允许你把遍布于应⽤各层的功能分离出来形成可重⽤的功能组件。3.Spring的优缺点是什么?
优点
1. ⽅便解耦,简化开发
Spring就是⼀个⼤⼯⼚,可以将所有对象的创建和依赖关系的维护,交给Spring管理。
2. AOP编程的⽀持
Spring提供⾯向切⾯编程,可以⽅便地实现对程序进⾏权限拦截、运⾏监控等功能。
3. 声明式事务的⽀持
只需要通过配置就可以完成对事务的管理,⽽⽆需⼿动编程。
4. ⽅便程序的测试
Spring对Junit4⽀持,可以通过注解⽅便的测试Spring程序。
5. ⽅便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接⽀持(如:Struts、Hibernate、MyBatis等)。
6. 降低JavaEE API的使⽤难度
Spring对JavaEE开发中⾮常难⽤的⼀些API(JDBC、JavaMail、远程调⽤等),都提供了封装,使这些API应⽤难度⼤⼤降低。
缺点
1. Spring明明⼀个很轻量级的框架,却给⼈感觉⼤⽽全
2. Spring依赖反射,反射影响性能
Spring5模块结构图
spring core:提供了框架的基本组成部分,包括控制反转(Inversion of Control,IOC)和依赖注⼊(Dependency Injection,DI)功
spring beans:提供了BeanFactory,是⼯⼚模式的⼀个经典实现,Spring将管理对象称为Bean。
spring context:构建于 core 封装包基础上的 context 封装包,提供了⼀种框架式的对象访问⽅法。
spring jdbc:提供了⼀个JDBC的抽象层,消除了烦琐的JDBC编码和数据库⼚商特有的错误代码解析, ⽤于简化JDBC。
spring test:主要为测试提供⽀持的,⽀持使⽤JUnit或TestNG对Spring组件进⾏单元测试和集成测试。
6.Spring 框架中都⽤到了哪些设计模式?
⼯⼚模式:BeanFactory就是简单⼯⼚模式的体现,⽤来创建对象的实例;
单例模式:Bean默认为单例模式。
代理模式:Spring的AOP功能⽤到了JDK的动态代理和CGLIB字节码⽣成技术;
模板⽅法:⽤来解决代码重复的问题。⽐如. RestTemplate, JmsTemplate, JpaTemplate。
观察者模式:定义对象键⼀种⼀对多的依赖关系,当⼀个对象的状态发⽣改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现–ApplicationListener。
7.详细讲解⼀下核⼼容器(spring c o ntext应⽤上下⽂) 模块?
这是基本的Spring模块,提供spring 框架的基础功能,BeanFactory 是 任何以spring为基础的应⽤的核⼼。Spring 框架建⽴在此模块之上,它使Spring成为⼀个容器。
Bean ⼯⼚是⼯⼚模式的⼀个实现,提供了控制反转功能,⽤来把应⽤的配置和依赖从真正的应⽤代码中分离。最常⽤的就是
org.springframework.l.XmlBeanFactory ,它根据XML⽂件中的定义加载beans。该容器从XML ⽂件读取配置元数据并⽤它去创建⼀个完全配置的系统或应⽤。
8.Spring框架中有哪些不同类型的事件?
Spring 提供了以下5种标准的事件:
上下⽂更新事件(ContextRefreshedEvent):在调⽤ConfigurableApplicationContext 接⼝中的refresh()⽅法时被触发。
上下⽂开始事件(ContextStartedEvent):当容器调⽤ConfigurableApplicationContext的Start()⽅法开始/重新开始容器时触发该事件。
spring ioc注解
上下⽂停⽌事件(ContextStoppedEvent):当容器调⽤ConfigurableApplicationContext的Stop()⽅法停⽌容器时触发该事件。
上下⽂关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。
请求处理事件(RequestHandledEvent):在Web应⽤中,当⼀个http请求(request)结束触发该事件。如果⼀个bean实现了ApplicationListener接⼝,当⼀个ApplicationEvent 被发布以后,bean会⾃动被通知。
9.Spring 应⽤程序有哪些不同组件?
Spring 应⽤⼀般有以下组件:
接⼝ - 定义功能。
Bean 类 - 它包含属性,setter 和 getter ⽅法,函数等。
Bean 配置⽂件 - 包含类的信息以及如何配置它们。
Spring ⾯向切⾯编程(AOP) - 提供⾯向切⾯编程的功能。
⽤户程序 - 它使⽤接⼝。
10.使⽤ Spr ing 有哪些⽅式?
使⽤ Spring 有以下⽅式:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。