Java——Spring常见的基础知识

1、Spring

答:Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container)AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration)Web、 消息(Messaging)Test 等 6 个模块中。 以下是 Spring 5 的模块结构图:
在这里插入图片描述

  • spring core 提供了框架的基本组成部分,包括控制反转 (Inversion of Control,IOC) 和依赖注入 (Dependency Injection,DI) 功能;
  • spring beans 提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean
  • spring context 构建于core 封装包基础上的 context 封装包,提供了一种框架式的对象访问方法
  • spring jdbc 提供了一个JDBC的抽象层,消除了烦琐的 JDBC 编码和数据库厂商特有的错误代码解析, 用于简化JDBC
  • spring aop 提供了面向切面的编程实现,让你可以自定义拦截器、切点等;
  • spring Web 提供了针对 Web 开发的集成特性,例如文件上传,利用 servlet listeners 进行 IOC容器初始化和针对 WebApplicationContext
  • spring test 主要为测试提供支持的,支持使用JUnitTestNG对Spring组件进行单元测试和集成测试。

2、Spring 框架中都用到了哪些设计模式?

  • 工厂模式: Spring IOC核心的设计模式的思想体现就是工厂模式,他自己这个IOC容器就是一个大的工厂,把所有的Bean实例都给放在了Spring容器里,如果你要使用Bean,就找Spring容器就可以了,自己不用创建对象了;
  • 单例模式:Spring中的Bean默认作用域就是 singleton 都是单例的;
  • 代理模式:Spring AOP功能的实现就用到了代理模式,Spring AOP生成一些代理对象,做一定的增强,然后我们对目标对象的访问就是基于这个代理对象去访问。SpringAOP功能用到了 JDK 的动态代理CGLIB 字节码生成技术;
  • 模板方法: 用来解决代码重复问题。Spring中的jdbcTemplatehibernateTemplate等以Template结尾的对数据库操作的类,它们就使用到了模板模式;
  • 观察者模式: 定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Springlistener的实现ApplicationListener
  • 适配器模式: Spring AOP 的增强或通知 (Advice) 使用到了适配器模式Spring MVC中也是用到了适配器模式适配Controller

3、Spring的核心容器(Spring Context应用上下文)模块

答:Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从真正的应用代码中分离。最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根据 XML 文件中的定义加载 Beans。该容器从XML文件读取配置元数据并用它去创建一个完全配置的系统或应用。

在这里插入图片描述

  • 简单点理解,就是将需要Spring IOC容器帮我们管理的对象Spring中我们称对象为Bean)和BeanBean之间的协作关系,是基于xmlJava注解的形式配置好,然后通过Spring应用上下文将其加载进Spring IOC容器中,这样容器就能给我们提供我们想要的对象管理服务。
  • 通俗点理解,就是我们需要一个对象,来将Spring配置文件中配置好的Bean关系,加载到Spring IOC容器中,而Spring应用上下文就充当了这样的角色。
  • 所以我们可以说Spring上下文,就是将需要Spring帮我们管理的对象加载到Spring IOC容器中的一种容器对象。

4、Spring框架中有哪些不同类型的事件?

  • 上下文更新事件(ContextRefreshedEvent): 在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。
  • 上下文开始事件(ContextStartedEvent): 当容器调用ConfigurableApplicationContextStart()方法开始/重新开始容器时触发该事件。
  • 上下文停止事件(ContextStoppedEvent): 当容器调用ConfigurableApplicationContextStop()方法停止容器时触发该事件。
  • 上下文关闭事件(ContextClosedEvent):ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。
  • 请求处理事件(RequestHandledEvent):Web应用中,当一个Http请求(request)结束触发该事件。如果一个bean实现了ApplicationListener接口,当一个ApplicationEvent 被发布以后Bean会自动被通知。

5、Spring 应用程序有哪些不同组件?

  • 接口: 定义功能。
  • Bean 类: 它包含属性,settergetter 方法,函数等。
  • Bean 配置文件: 包含类的信息以及如何配置它们。
  • Spring 面向切面编程( AOP ): 提供面向切面编程的功能。
  • 用户程序: 它使用接口。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值