SSM框架知识点
什么是Spring框架:
Spring是⼀种轻量级开源开发框架,是⼀个⽤来约束和提供⽀持的半成品应⽤。
Spring中重要的模块:
Spring Core:Spring的基础,可以说Spring其他所有的功能都需要依赖于该类库,主要提供IOC依赖注⼊功能
Spring Aspect:该模块为AspectJ的集成提供⽀持
Spring AOP:提供了⾯向切⾯编程的实现
Spring JDBC:Java数据库的连接
Spring ORM:⽤于⽀持Hibernate等ORM⼯具
Spring Web:为创建web应⽤提供⽀持
Spring Test:提供了对JUnit和TestNG测试的⽀持
使⽤Spring框架的好处:
控制反转IOC:Spring通过控制反转实现了松散耦合,不需要管理对象,丢给IOC容器即可,还⽅便管理应⽤中对象的⽣命周期和配置⾯向切⾯编程AOP:⾯向切⾯编程,把应⽤业务逻辑和系统服务分开
Spring Bean作⽤域:
singleton:当bean的作⽤域为单例时,Spring会在IOC容器对象创建时就创建bean对象
prototype:当bean的作⽤域为prototype时,IOC容器在获取bean实例时创建bean的实例对象,每次调⽤getBean()时都会返回⼀个新的实例
request:每次HTTP请求都会创建⼀个新的bean,该作⽤域仅适⽤于WebApplicationContext中
session:同⼀个HTTP session共享⼀个Bean,不同的session使⽤不同的Bean。
SpringIOC:
IOC(Inversion of Control)控制反转,是⼀种设计思想,就是将原本在程序中⼿动创建对象的控制权,交由Spring框架管理来管理。IOC容器是Spring⽤来实现IOC的载体,IOC容器实际上就是⼀个Map(key, value),Map中存放的是各种对象。
将对象之间的相互依赖关系交给IOC容器管理,并由IOC容器完成对象的注⼊。很⼤程度上简化开发,把应⽤从复杂的依赖关系中解放出来。IOC容器就像是⼀个⼯⼚,当我们需要创建⼀个对象时,只需要配置好配置⽂件/注解即可,完全不⽤考虑对象是如何被创建出来的。
IOC的思想在于,资源不由使⽤的双⽅进⾏管理,⽽由不使⽤资源的第三⽅管理,这可以带来很多好处,⼀,资源集中管理,实现资源的的可配置和易管理。⼆,降低了使⽤资源双⽅的依赖程度,就是耦合性。
栗⼦:⾏李箱-》箱体-》底盘-》轮⼦
Spring AOP:
AOP(Aspect Oriented Programming)⾯向切⾯编程,能够将那些与业务⽆关,却为业务模块所共同调⽤的逻辑和责任(例如事务处理、⽇志处理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接⼝,那么Spring AOP会使⽤JDK Proxy,去创建代理对象,如果没实现接⼝,Spring AOP将会采⽤Cglib来⽣成AOP代理类。
Spring AOP 和 AspectJ AOP,Spring AOP属于运⾏时增强,⽽AspectJ是编译时增强,Spring AOP基于代理,⽽AspectJ基于字节码操作,Spring AOP已经集成了AspectJ,AspectJ应该算是Java⽣态中最完整的AOP框架了。
将⼀个类声明为Spring的bean的注解有哪些:
@Component,通⽤注解,可标注任意类为Spring组件。如果⼀个bean不知道属于那⼀层,可以使⽤@Conponent注解标注
@Repository,对应持久层即DAO层,主要⽤于数据库相关操作
@Service,对应服务层,主要涉及⼀些复杂的逻辑,需要⽤到DAO层
@Controller,对应Spring MVC控制层,主要⽤于接受⽤户请求并调⽤Service层返回数据给前端页⾯。
@Component和@Bean区别
前者作⽤于类,后者作⽤于⽅法
@Component通常是通过类路径扫描来⾃动装配到Spring容器中,@Bean注解通常是我们在标有该注解的⽅法中定义⽣成这个bean @Bean⽐前者⾃定义更强,很多时候只能通过@Bean注解来注册bean,⽐如我们引⽤第三⽅库中的类需要装配到Spring时,只能使⽤bean。
Spring中的bean⽣命周期:
Spring MVC:
MVC是⼀种设计模式,Spring MVC是⼀个很优秀的MVC框架,天⽣与Spring框架集成。Spring MVC下我们⼀般把后端项⽬分为Service层(处理业务)、DAO层(数据库操作)、Entity层(实体类)、Controller层(控制层,返回数据给前台)
Spring MVC⼯作原理:
流程说明:
1. 客户端发送请求,直接请求到DispatcherServlet
2. DispatcherServlet根据请求信息调⽤HandlerMapping,解析请求对应的Handler
3. 解析到对应的Handler(Controller)后,开始由HandlerAdapter适配器处理
spring ioc注解4. HandlerAdapter会根据Handler来调⽤真正的处理器处理请求,并处理相应的业务逻辑
5. 处理完业务逻辑会返回⼀个ModelAndView,Model是返回的数据对象,View是⼀个逻辑上的View
6. ViewResolver会根据逻辑View查实际的View
7. DispatcherServlet把返回的Model传给View(视图渲染)
8. 把View返回给请求者
Spring中⽤了哪些设计模式:
⼯⼚模式,Spring使⽤⼯⼚模式通过BeanFactory、ApplicationContext创建bean对象
代理模式:Spring AOP功能实现
单例模式:Spring中的Bean默认都是单例
观察者模式:Spring事件驱动模型就是观察者模式的⼀个经典应⽤
包装器模式:连接多个数据库,访问不同的数据库,这种模式可以让我们根据客户需求动态的切换数据源
Spring管理事务⽅式:
1. 编程式事务,在代码中硬编码
2. 声明式事务,再配置⽂件中配置
声明式事务:
1. 基于XML的声明事务
2. 基于注解的声明式事务
Spring事务中的隔离级别有⼏种:
1. TransactionDefinition.ISOLATION_DEFAULT:使⽤数据库的默认隔离级别
2. TransactionDefinition.ISOLATION_READ_UNCOMMITED:允许°尚未提交的数据,可能产⽣脏读、幻读、不可重复度问题
3. TransactionDefinition.ISOLATION_READ_COMMITED:允许读已提交的数据,会产⽣幻读和不可重复度问题
4. TransactionDefinition.ISOLATION_REPEATABLE_READ:对同⼀字段的多次读取结果都是⼀致的,除⾮数据本⾝被修改。有幻读的
可能
5. TransactionDefinition.ISOLATION_SERIALIZABLE:最⾼隔离级别,不允许并发,所有事物依次执⾏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论