Spring面试题思维导图整理

5 篇文章 0 订阅

知识点梳理总结:将上述思维导图总结为三个知识块进行记忆

一.什么是spring

1.spring是开源免费的应用型框架,旨在降低程序的开发难度,轻量级松耦合。具有分层架构允许用户自行选择组件,是一个有凝聚力的框架。可以集成hibernate,ibatis,ejb等。支持pojo编程,从而具备持续集成和可测试性。由于依赖注入和控制反转jdbc得以简化。

2.ioc依赖注入控制反转,aop切面编程,能将应用逻辑服务和系统服务隔离。以实现高类聚。容器负责创建和管理bean的生命周期和配置。mvc对web应用有高可配性。事务管理提供了事务管理抽象层。jdbc提供了jdbc通用的异常层次机构。简化了错误处理。

3.组件包括有接口,bean,aop,配置文件这些组件。配置文件即xml文件它包含类信息,他描述了这些类是如何配置和相互引用的。spring可以作为成熟的web应用,可以远程调用,可以作为企业级javabean。他包含了以下模块:核心容器(bean,core,context,spel),aop切面,数据访问层包括(jdbc,orm,oxm,jms),有web包括(web-servlet,web-socket),test等模块。

二.什么是aop

aop即切面编程,它与oop相辅相成,它提供了与oop不同的抽象软件结构视角。在oop中类作为我们的基本单元,在aop中aspect是基本单元。aspect由point和advice组成。它既包含了横切逻辑的定义,也包含了连接点的定义。springaop就是负责实施切面的框架。他将定义的横切逻辑编织到目标对象的连接点。主要工作就是如何编织目标对象到连接点。即如何通过pointxut和advice定位到joinpoint上。如何在advice上编写代码。joinpoint就是程序运行的一些时间点,列如方法的执行,或异常的处理。在特定的joinpoint处,aspect所采取的动作称为advice,springaop在joinpoint周围使用advice作为拦截器。advice包括befor,afterreturning,afterthrow,after,around几种方式。编织;为了创建一个advice对象而连接一个aspect和其他应用类型对象,成为编织。aop有静态代理和动态代理两种实现方式。静态代理指使用aop框架提供的命令进行编译,从而编译阶段生成aop代理类。因此称为编译时增强,编译时编织,类加载时编织。动态代理在运行时在内存中”临时“生成aop动态代理类。因此称为运行时增强。jdk动态代理,cglib。aop代理就是将advice应用于目标对象后创建的对象称为代理。在客户端对象的情况下,代理对象和目标对象是相同的。spring中concern和cross-cuttingconcern的不同之处。concern是我们想要在特定模块中定义的行为。他可以定义我们想要实现的功能。cross-cuttingcern是一个适用于整个应用的行为。会影响整个应用程序。列如日志,安全性和数据传输。是应用程序机会每个模板都要关注的问题。

三.什么是ioc

spring的核心就是容器,他们创建对象,将他们配置到一起,配置和管理对象的完整生命周期。通过依赖注入管理应用程序的组件。通过读取配置元数据接受对象进行实例化。配置和组装。元数据可以通过xml文件,注解和java代码提供。

  ioc的实现是工厂模式加反射机制。ioc包括beanfactory和applicationcontext两种容器。beanfactory就像一个包含bean集合的工厂类。它会在客户端要求时实例化bean。applicationcontext接口扩展了beanfactory接口。它在beanfactory的基础上提供了一些额外的功能。什么是springbean:bean是由ioc容器管理,他们是构建程序主干的对象。由ioc容器实例化,装配,配置和管理。bean是基于用户提供的配置元数据创建的。

bean的生命周期:首先spring根据元数据实例bean。然后通过依赖注入填充bean的属性,如果实现了beannameaware方法,则通过传递bean的id调用setbeanName方法。如果实现beanfactoryaware方法,则传递bean的实例调用setBeanFactory方法。如果有任何关联的BeanPostProcessors方法则调用前置方法。如果实现了int()方法则调用调用int方法。如果实现了任何的BeanPostProcessors方法则会调用后置方法。如果实现了disposablebean方法,则会调用distroy方法。实现了指定的distroy方法则会调用指定的方法。

什么是spring的内部bean,只有bean作为另外一个bean的属性时,我们才能声明为内部bean。为了定义bean,spring基于xml的配置元数据在或中提供了元素的使用。内部bean总是匿名的,他们总是作为原形。

  bean的装配,装配就是当bean在spring容器中组合到一起时,它被称为装配或bean的装配。spring需要知道需要什么bean。以及如何使用依赖注入将bean绑定在一起。同时装配bean。

  在spring中提供了自动装配,也就是说,可以通过检查beanfactory的内容让spring自动解析bean的协作者。它主要包括的模式有1.no没有自动装配。2.byname他根据对象名称注入对象依赖项。他匹配并装配其属性与xml文件中有相同定义的bean。3.bytype他根据对象类型注入对象依赖项。如果属性类型与xml文件中的一个bean名称匹配,则匹配并装配属性。4.构造函数:它通过调用类的构造函数来注入依赖项。autodetect-首先尝试使用构造函数autowire装配。如果不能则尝试使用bytype自动装配。自动装配有局限性:有覆盖的可能性,你可以使用或指定依赖项这将覆盖自动装配。基本元数据类型,简单属性无法自动装配。自动装配不太明确。默认情况下,spring容器中未打开注解装配,因此要基于注解装配。我们必须通过配置<context anotation config>元素,在spring配置文件中启动它。

spring的配置文件:spring提供的配置方式是基于xml配置文件。bean所需要的依赖项和服务在xml配置文件中指定。

spring常用注解:component是将类标记为javabean,它是spring构造函数的通用型,被标记的类会被spring扫描机制拾取并纳入应用程序中。
controller将一个类标记成为spring mvc web控制器,并会自动导入ioc容器中进行管理。
service他是组件注解的特列,他不会为component注解提供任何行为。我们在服务层使用service注解而不是component,应为它可以指定其意图。
repostory注解用途和功能与component注解相同。他是component注解的特列,dao层使用repostory注解可以提供额外的功能,它能够将为被标记的异常有资格成为spring dataAssessException
required注解应用于bean的seter方法,此注解仅指示,必须在配置时使用bean的显示属性值或自动装配填充受影响的bean属性。若未填充受影响的属性,则抛出异常。 
autowired注解可以更准确的控制应该在何处以及如何进行自动装配。用于setter方法上,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean。默认情况下他是类型驱动的注入。
autowired注解可以更准确的控制应该在何处以及如何进行自动装配。用于setter方法上,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean。默认情况下他是类型驱动的注入。
autowired与resource注解的区别:autowried与resource都是作用于构成函数和seter上,因为作用于setter上所以不用谢set方法。不同处是,resource不是spring的注解,但spring支持该注解的注入
autowried默认情况下是使用bytype依赖注入,它不允许为空,如果为空可以设置requild属性为false。如果想使用byname依赖注入可以配合使用quilfer注解使用。
resource默认情况下是使用byname进行依赖注入,他有两个属性name和type,那么解析为通过bean的名称进行依赖注入,type解析为依靠bean的类型进行依赖注入。
springdto的作用,springdto使得jdbc,hibernate,jdo这样的数据访问技术更容易以一种统一的方式工作。这使得用户更容易在持久化技术之间来回切换。它允许你在编写代码时无需考虑捕获不同技术的不同异常springdto包括的异常dataAccessException,dataAccessResourceFaileException,cleanUpfailDataAccessException,invalidDataAccessApiUsageException
SpringjdbcApi中存在哪些类,jabctemplate,simpleJdbctemplate,simpleJdbcInsert,simpleJdbcCall
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值