初识Spring架构

对Spring的了解

对于Spring框架,其实大家对它不陌生,比如我们面试的时候,说说你对spring的了解,脱口而出的控制反转ioc(Inversion of Control)和面向切面编程aop(Aspect Oriented Programming)。但其实我觉得对于Spring框架给咱们带来的方便,就是对于bean的操作交给容器去管理,我们只需要让容器去创建我们需要的bean就可以了。而不是自己每次使用的时候都需要将对象new一下,降低代码之间的耦合度。

缺点就是对于xml配置过多,导致我们在用spring框架需要配置过多的xml配置文件。这个也在之后的springboot中进行了简化。

那我们大概说一下spring的这几个点

依赖注入DI(Dependency injection)

DI:将所依赖的关系自动交给目标对象,而不是让对象自己去获得依赖,从而实现松耦合。

DI分为依赖和注入

- 依赖:依赖DI容器提供外部资源

- 注入:将对象需要的外部资源通过DI容器注入进来

那怎么将对象注入进来?

  • 可以通过注解的方式自动装配
  • 可以通过Java的注解配置进行装配
  • 可以通过xml的方式进行装配

这几种方式我们会在之后进行详解。

面向切面编程(apect-oriented programming,AOP)

面向切面编程是促使软件系统实现关注点分离的一项技术。我们可以把日志,安全和事物关注点与核心逻辑相分离。这样我们只需要关注于核心逻辑代码的编写。

Spring容器

  • 容器是spring框架的核心,负责创建对象,装配它们,配置它们并且管理它们的整个生命周期。
  • Spring容器使用DI管理构成应用的组件,它会创建相互写作的组件之间的联系(将外部资源通过DI容器注入到哪个需要它的对象)
  • Spring容器分为两个类型:bean工厂和应用上下文
    • bean工厂(org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,提供基本的DI支持
    • 应用上下文(由org.springframework.context.ApplicationContext接口定义),基于BeanFactory构建,并提供应用框架级别的服务,例如从属性文件解析文本信息以及发布应用时间给感兴趣的事件监听者。下面罗列几个可能会遇到的
      • AnnotationConfigApplicationContext:独立的应用程序上下文,接受带注释的类作为输入,特别是@Configuration注释的类或者@Component类型。从一个或多个基于java配置类中加载Spring应用上下文。
      • AnnotationConfigWebApplicationContext:从一个或多个基于java配置类中加载Spring Web应用上下文。
      • ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义。
      • FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载上下文定义。
      • XmlWebApplicationContext:从web应用下的一个或多个xml配置文件中加载上下文定义。

Spring模块

Spring模块架构图

上图是spring5的核心模块,详细内容可以去其它博客查看。spring5体系架构

你可能感兴趣的:(初识Spring架构)