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

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

Spring有哪些模块

Spring基础梳理(一):一定要先全局掌握Spring_第1张图片

 

  • 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基础梳理(一):一定要先全局掌握Spring_第2张图片

Spring优缺点

Spring基础梳理(一):一定要先全局掌握Spring_第3张图片

 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注入更灵活,字段注入没有侵入性但不易控制。需要根据实际场景选择最合适的依赖注入方式

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

你可能感兴趣的:(【框架相关】,spring,java,后端,架构,热门,原力计划)