SSM框架知识汇总

前言

本文是个人学习记录的总结,知识点可能不全面,也可能有误,请注意鉴别。

Spirng

Spring组成

Spring框架由多个不同的模块组成,每个模块都提供了不同的功能,这些模块可以根据需要组合在一起使用。下面是Spring框架的组成:

  • 核心容器(Core Container):
    核心容器是Spring框架的最基本组成部分,包括IoC容器和BeanFactory。IoC容器负责管理Java对象的生命周期和依赖关系,Bean Factory则是IoC容器的底层实现。
  • Spring上下文(ApplicationContext):
    Spring上下文是IoC容器的扩展,它提供了更多的企业级服务,如国际化、事件传递、资源加载等。
  • Spring AOP和Instrumentation(AOP and Instrumentation):
    SpringAOP和Instrumentation模块提供了面向切面编程(AOP)的功能和JVM监控和管理(Instrumentation)的能力。
  • 数据访问/集成(Data Access/Integration):
    数据访问/集成模块提供了对JDBC、ORM(如Hibernate、MyBatis)、事务管理、消息传递等方面的支持。
  • Web(Web):
    Web模块提供了基于MVC模式的Web框架,包括Spring MVC、WebSocket、Rest等。
  • Test(Test):
    Test模块提供了对Spring应用程序进行单元测试和集成测试的支持。
  • Aspects(Aspects):
    Aspects模块提供了面向切面编程(AOP)的基本实现。
  • Instrumentation(Instrumentation):
    Instrumentation模块提供了JVM监控和管理的能力。
  • Messaging(Messaging):
    Messaging模块提供了对消息传递机制的抽象和实现。
  • Core Container Extensions(Core Container Extensions):
    Core Container Extensions模块提供了对Spring IoC容器的扩展,包括Spring Expression Language(SpEL)和AspectJ集成等。

Spring核心知识

IoC

  1. IoC(Inversion of Control,控制反转)是Spring框架的核心概念之一,它是一种设计模式,也称为依赖注入(Dependency Injection, DI)。在传统的编程模式中,对象之间的依赖关系是由程序员手动创建和维护的,而在IoC模式下,控制权由程序员转移到了框架中,框架负责创建和维护对象之间的依赖关系,从而实现了对象之间的松耦合。

  2. 在Spring框架中,IoC容器负责管理对象的生命周期和依赖关系。容器会根据配置文件或Java注解创建对象,并将这些对象装配到容器中。当其他对象需要访问这些对象时,容器会自动将它们注入到其他对象中,从而实现了依赖注入。通过IoC容器,开发人员可以将应用程序中的各个部分进行解耦,从而实现了更高的灵活性和可维护性。

  3. Spring框架提供了两种IoC容器实现:BeanFactory和ApplicationContext。BeanFactory是IoC容器的基本实现,提供了对象的创建和装配等基本功能。ApplicationContext是BeanFactory的子类,提供了更多的企业级服务,如国际化、事件传递、资源加载等。

  4. 总之,IoC是Spring框架的核心概念,通过IoC容器管理对象的生命周期和依赖关系,实现了对象之间的松耦合,提高了应用程序的灵活性和可维护性。

IoC容器将对象创建和管理的权利交给了Spring框架,这是实现依赖注入(DI)的前提。

DI

  1. DI(Dependency Injection,依赖注入)是Spring框架的核心概念之一,它是一种实现IoC(Inversion of Control,控制反转)的方式。在传统的编程模式中,对象之间的依赖关系是由程序员手动创建和维护的,而在DI模式下,控制权由程序员转移到了框架中,框架负责创建和维护对象之间的依赖关系,从而实现了对象之间的松耦合。

  2. DI是指通过构造方法、工厂方法或属性的方式将对象的依赖关系注入到对象中。在Spring框架中,开发人员可以通过在Bean配置文件或Java注解中定义依赖关系,告诉Spring框架哪些对象需要注入到哪些对象中。当IoC容器创建Bean的时候,它会自动将依赖的对象注入到其他对象中,从而实现了依赖关系的自动管理。

  3. DI有三种方式:构造方法注入、Setter方法注入和接口注入。构造方法注入是通过Bean的构造方法来注入依赖,Setter方法注入是通过Bean的Setter方法来注入依赖,接口注入是通过Bean实现接口来注入依赖。在实现依赖注入的过程中,开发人员可以根据业务需求选择合适的注入方式。

  4. 总之,DI是Spring框架的核心概念之一,通过将对象的依赖关系注入到对象中,实现了对象之间的松耦合。通过DI,开发人员可以将应用程序中的各个部分进行解耦,从而实现了更高的灵活性和可维护性。

DI实现了松耦合,增加了程序的可扩展性、易维护性。

AOP

  1. AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,它可以帮助开发人员将系统中各个模块之间的横切关注点进行解耦,从而提高了系统的可维护性和可扩展性。AOP是Spring框架的核心概念之一,它通过将系统中的横切关注点(如日志、事务、安全性等)抽象成切面,然后将这些切面应用到系统中的各个模块中,从而实现了横切关注点的复用。

  2. 在AOP中,切面由切点和通知组成。切点定义了在哪些位置插入通知,通知定义了在切点处要执行的逻辑。通知可以分为前置通知(在方法执行之前执行)、后置通知(在方法执行之后执行)、环绕通知(在方法执行前后都执行)等几种类型。

  3. Spring框架提供了多种AOP实现方式,包括基于代理的AOP和基于字节码生成的AOP。在基于代理的AOP中,Spring框架通过动态代理技术,在运行时创建代理对象,将切面逻辑织入到代理对象的方法中。在基于字节码生成的AOP中,Spring框架通过在编译时修改字节码,将切面逻辑织入到目标对象的方法中。这两种实现方式各有优缺点,开发人员可以根据具体的业务场景选择合适的实现方式。

  4. 总之,AOP是一种编程范式,可以帮助开发人员将系统中各个模块之间的横切关注点进行解耦,提高了系统的可维护性和可扩展性。Spring框架提供了多种AOP实现方式,可以满足不同的业务场景需求。

AOP是一种编程思想,它能抽取通用的代码以简化开发、降低冗余。

Spring常用组件

  • Bean:
    Bean是Spring框架中最基本的组件,它是由Spring容器创建、管理和维护的。Bean可以通过XML文件或Java注解进行配置,可以将Bean注入到其他Bean中,实现依赖注入。
  • IoC容器:
    IoC容器是Spring框架的核心组件,它负责管理Bean的生命周期和依赖关系。Spring提供了两种IoC容器实现,BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子类,提供了更多的企业级服务。
  • AOP框架:
    Spring框架提供了一个AOP(面向切面编程)框架,可以实现横切逻辑的复用、降低耦合度、提高代码可读性和可维护性等优势。
  • 数据访问/集成组件:
    Spring框架提供了对JDBC、ORM(如Hibernate、MyBatis)、事务管理、JMS等方面的支持,可以帮助开发人员简化数据访问和集成的操作。
  • Spring MVC框架:
    Spring MVC框架是Spring框架的一部分,提供了一个基于MVC模式的Web应用框架,可以帮助开发人员简化Web应用的开发。
  • Spring Security框架:
    Spring Security框架是一个安全框架,可以帮助开发人员实现用户认证、授权、密码加密、会话管理等安全控制功能,保障应用的安全性。
  • Spring Test组件:
    Spring框架提供了对Spring应用程序进行单元测试和集成测试的支持,可以帮助开发人员测试和验证应用程序的正确性。
  • Spring Web Services框架:
    Spring Web Services框架提供了对Web服务的支持,可以帮助开发人员创建和发布Web服务。
  • Spring Batch框架:
    Spring Batch框架是一个批处理框架,可以帮助开发人员简化批处理操作,实现高效的数据处理和管理。

常用注解

注解含义
@Component通用的注解,用于标识一个组件类。
@Controller用于标识一个控制器类。
@Service用于标识一个服务类。
@Repository用于标识一个数据访问组件类。
@Autowired自动注入依赖关系。
@Qualifier指定自动注入的Bean名称。
@Value注入属性值。
@RequestMapping映射URL到控制器方法或服务方法。
@PathVariable获取URL中的参数值。
@RequestParam获取请求参数的值。
@ResponseBody将方法返回值直接写入到响应体中。
@ExceptionHandler处理异常。
@Configuration标识一个配置类。
@Bean在配置类中声明一个Bean。
@Import导入其他配置类。
@Profile指定配置文件的环境。
@Transactional开启事务支持。
@Aspect标识一个切面。
@Pointcut定义切点。
@Before、@After、@Around定义切面的通知类型。

spring 中 bean 对象的⽣命周期

对象的生命周期被分成了1.创建阶段 2.初始化 3.使用 4.销毁

  1. 单例对象在spring容器创建的时候就会被创建出来,而多例的对象会在ac.getBean()的时
    候创建出对象。
  2. spring会对对象的属性进行依赖的注入。
  3. 执行BeanPostProcessor的前置处理。
  4. 执行InitializingBean接口的初始化方法。
  5. 执行bean标签中配置的init-method的初始化方法。@PostConstruct这个注解key替代in
    it-method配置
  6. 执行BeanPostProcessor的后置处理的方法。
  7. 到此整个bean对象创建完毕,我们就使用这个bean对象。
  8. 在spring容器要销毁对象的时候,bean会执行销毁操作,先执行DisposableBean接口的销
    毁方法。
  9. 执行配置在bean标签上面的destory-method的方法。 对应的注解是@PreDestroy

Spring 中有哪⼏种⽅式把 bean 对象交给 IOC 容器

  1. Bean注解加上,Configuration
  2. 使用Component注解。
  3. 使用Import注解,可以导入一个普通的类,也可以导入一个ImportSelector
  4. 可以实现FactoryBean接口。
  5. 可以实现BeanDefinitionRegistryPostProcessor接口,手动向容器中注册BeanDefini
    tion

Spring 事务失效的⼏个场景

  1. 抛出检查异常导致事务不能回滚
    a. Spring 默认只能回滚运⾏时异常。
    b. 解决办法就是配置 rollbackfor 属性
  2. 业务⽅法内⾃⼰处理了异常
    a. 事务通知类中只有捕捉到异常后才有可能事务回滚,在业务类中⾃⼰把异常处
    理了就相当于没有异常发⽣。
    b. 解决办法是捕捉到异常处理后再⼿动抛出⼀下。
  3. ⾮ public ⽅法导致事务失效
    a. Spring 为⽅法添加代理,添加事务通知的前提是业务⽅式必须是 public
    b. 解决办法就是把⽅法改为 public
  4. 调⽤本类中的其他⽅法会导致事务失效。
    a. 本类中的其他⽅法调⽤时不会经过代理,因此⽆法增强。
    b. 把⾃⼰通过注⼊的⽅式作为属性,然后调⽤⽅法。

SpringMVC

基本组成

  1. DispatcherServlet:是Spring MVC的核心组件,它是一个Servlet,用于接收所有的HTTP请求,并将请求分发给适当的处理程序(Controller)来处理。

  2. HandlerMapping:用于将请求URL映射到对应的Controller。

  3. Controller:用于处理请求,并返回一个ModelAndView对象,其中包含了视图名称和模型数据。

  4. ViewResolver:用于将视图名称解析为View对象。

  5. View:用于将模型数据生成HTML等内容。

  6. Interceptor:用于在Controller处理请求前后执行额外的逻辑,如权限控制、日志记录等。

  7. ExceptionHandler:用于处理Controller中抛出的异常。

  8. 转换器(Converter)和格式化器(Formatter):用于在Controller中处理请求参数和响应结果的类型转换和格式化。

  9. 校验器(Validator):用于在Controller中对请求参数进行校验。

常用注解

注解说明
@Controller声明一个Spring MVC的Controller类
@RequestMapping将HTTP请求映射到Controller的处理方法上
@RequestParam获取HTTP请求中的参数值
@PathVariable获取URL路径中的变量值
@ResponseBody将方法返回的对象序列化为JSON或XML等格式的响应结果
@RequestBody将HTTP请求的内容绑定到方法的参数上
@ModelAttribute将HTTP请求的参数绑定到Model对象上
@SessionAttribute将HTTP Session中的属性绑定到Model对象上
@InitBinder注册数据绑定器
@ExceptionHandler处理Controller方法抛出的异常
@ResponseStatus设置HTTP响应的状态码
@CrossOrigin允许跨域访问
@Validated标记需要验证的方法参数
@Valid声明对象需要被验证
@Autowired自动装配Spring组件
@Qualifier指定自动装配的Bean名称
@Resource自动装配Java EE组件
@Value注入属性值
@Configuration声明一个Spring配置类
@ComponentScan扫描指定包下的组件
@Bean声明一个Spring Bean
@Profile指定Bean的配置环境
@EnableWebMvc启用Spring MVC的配置
@EnableTransactionManagement启用Spring事务管理
@Transactional声明一个事务性方法

SpringMVC 处理请求的流程

在这里插入图片描述

  1. 客户端(浏览器)发送请求,直接请求到 DispatcherServlet(核心控制器)。
  2. DispatcherServlet 根据请求信息调用 HandlerMapping(映射器),解析请求
    对应的 Handler(控制器)。
  3. 解析到对应的 Handler(也就是我们平常说的 Controller 控制器)后,开始由 H
    andlerAdapter 适配器处理。
  4. HandlerAdapter 会根据 Handler来调用真正的处理器开处理请求,并处理相应的
    业务逻辑。
  5. 处理器处理完业务后,会返回一个 ModelAndView(模型和视图) 对象,Model 是
    返回的数据对象,View 是个逻辑上的 View。
  6. ViewResolver(视图解析器) 会根据逻辑 View 查找实际的 View。
  7. DispaterServlet 把返回的 Model 传给 View(视图渲染)。
  8. 把 View 返回给请求者(浏览器)

什么是Spring MVC?它的主要特点是什么?

Spring MVC是基于Spring框架的MVC模式的Web框架,它允许开发人员使用面向对象的方式来设计和实现Web应用程序,提高了Web应用程序的可维护性和可扩展性。Spring MVC的主要特点包括灵活的URL映射、强大的视图解析、支持多种视图技术、易于测试等。

Mybatis

详见
Mybatis-plus总结

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值