Spring基础梳理(一):一定要先全局掌握Spring

本文概述了Spring框架的核心模块,包括Core(IoC容器)、Bean、AOP、ORM、DAO、WEB、Context和MVC,介绍了SpringExpression的特点,并详细讨论了依赖注入的三种方式。作者反思如何提升博客内容的易读性和趣味性。
摘要由CSDN通过智能技术生成

越活越完蛋了,看着看着现在又想梳理梳理Spring基础,搞点原始真解吧,不过技术人每个阶段看相同东西的理解都是不同的,只是现在浮躁的技术中又有多少人能够一本书啃两遍以上呢,我也一样,徜徉于业务之中,所以技术是什么,永远记住,技术是服务于业务的,架构也是同样的道理,不要为了技术而技术,为了架构而架构

Spring有哪些模块

 

  • Spring Core

Core模块是Spring的核心类库,Spring的所有功能都依赖于该类库,Core主要实现IOC功能,Sprign的所有功能都是借助IOC实现的。

包含一些类如BeanFactory,ApplicationContext等。主要功能有:

  • IoC容器:管理Bean的创建、初始化等生命周期
  • 依赖注入:管理Bean之间的依赖关系,可以通过setter注入或构造器注入
  • 事件发布:支持事件机制,如ContextStartedEvent等
  • Bean模块

bean相关,依赖查找,依赖注入

  • AOP

AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置。俗称,面向切面编程,解耦,可重用

  • ORM

Spring 的ORM模块提供对常用的ORM框架的管理和辅助支持,Spring支持常用的Hibernate,ibtas,jdao等框架的支持,Spring本身并不对ORM进行实现,仅对常见的ORM框架进行封装,并对其进行管理

  • DAO模块

Spring 提供对JDBC的支持,对JDBC进行封装,允许JDBC使用Spring资源,并能统一管理JDBC事物,并不对JDBC进行实现。(执行sql语句)

  • WEB模块

WEB模块提供对常见框架如Struts1,WEBWORK(Struts 2),JSF的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。

  • Context模块

这是在Core基础上构建的,提供了框架式的Spring应用支持。它继承了Core的所有功能,并添加了国际化、事件传播、资源加载和透明地创建上下文(比如Servlet容器)等功能。

  • MVC模块

WEB MVC模块为Spring提供了一套轻量级的MVC实现,在Spring的开发中,我们既可以用Struts也可以用Spring自己的MVC框架,相对于Struts,Spring自己的MVC框架更加简洁和方便。

  • Spring Expression

Spring表达式语言模块,主要用途:

  • 注入bean属性值
  • 在运行时查询和操作对象图
  • 方法参数化表达式
  • 条件化的配置文件逻辑等

核心特性

  • IOC容器
  • spring事件
  • 资源管理
  • 国际化
  • 校验
  • 数据绑定
  • 类型转换
  • spirng表达式
  • 面向切面编程

版本关系

Spring优缺点

 SpringMVC的执行流程

1、  用户发送请求至前端控制器DispatcherServlet。

2、  DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、  处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、  DispatcherServlet调用HandlerAdapter处理器适配器。

5、  HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、  Controller执行完成返回ModelAndView。

7、  HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、  DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、  ViewReslover解析后返回具体View。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、 DispatcherServlet响应用户。

实例化Bean的方法initializeBean,该方法在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory类下

依赖注入的三种方式

setter注入方式

public class UserService {

  private UserRepository userRepository;

  public void setUserRepository(UserRepository userRepository) {
    this.userRepository = userRepository;
  }

}  

构造器注入

public class UserService {

  private UserRepository userRepository;

  public UserService(UserRepository userRepository) {
    this.userRepository = userRepository;
  }

}

注解注入

public class UserService {

  @Autowired
  private UserRepository userRepository;

}

 这三种方式各有优劣,构造器注入可以强制依赖初始化,Setter注入更灵活,字段注入没有侵入性但不易控制。需要根据实际场景选择最合适的依赖注入方式

我在想怎么样才能让博客更有趣,更简单,更易懂呢,这是个好问题,谁知道?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值