面试题:说说你对spring的理解

面试的时候的一个问题,说得越详细越容易理解越好.不要复制的,一楼是复制的,而且面对面试官的时候这样说也增加不了多少分数的.... 面试的时候的一个问题,说得越详细越容易理解越好.
不要复制的,一楼是复制的,而且面对面试官的时候这样说也增加不了多少分数的.
展开
 我来答
动力节点
2019-05-08 · 口口相传的Java黄埔军校
动力节点
动力节点始于2009年,一家专注IT教育的培训机构,在全国各大城市设有直营校区,是中国软件研发人才一体化服务的倡导者,为解决当前软件开发技术飞速发展,专注培养面向互联网领域的IT高端软件人才
向TA提问
展开全部

原文:https://www.zhihu.com/question

Spring是一个十分庞大的体系,具体可以访问它的官网https://spring.io/projects进行详细了解。
首先,回答这个问题,可以先介绍一下Spring体系中的几个项目:

  • SpringFramework

  • SpringData

  • SpringSecurity

  • SpringBoot

  • SpringCloud

  • 当然,除了这些之外,Spring还包括很多其他的项目。
    接着,着重介绍SpringFramework这个项目,它是一个开源的Java/JavaEE全功能栈的应用程序,SpringFramework提供了一个简易的开发方式,这种开发方式可以避免使用那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
    Spring的这种低侵入式设计使代码的污染极低。
    SpringFramework包括以下部分:

    然后,我们再介绍一下Spring的核心概念:

  • Bean管理

  • 依赖注入(DI),又称为控制反转(IOC)

  • 面向切面编程(AOP)

  • ①Bean管理

    与传统的应用程序不同,在Spring中将对象的创建交给Spring容器来管理,也就是说只有放入Spring容器中的类,Spring才能对其产生作用。那么Spring究竟是怎样获取类的对象的呢?
    要想知道这个,我们首先要弄清楚这几点:
    BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口,通常用它的子接口ApplicationContext来访问Spring容器。


    ApplicationContext子接口常用的有四个实现类:

  • ClassPathXmlApplicationContext 从 classpath 加载 spring 的配置文件

  • FileSystemApplicationContext 从系统文件加载 spring 的配置文件

  • AnnotationConfigApplicationContext 获取基于注解的 spring 容器对象

  • XmlWebApplicationContext 在 web 环境中获取 spring 容器对象

  • Spring通过BeanFactory来获取这些类的对象,在配置文件中通过<bean/>节点将类交给Spring进行管理,ApplicationContext的实现类通过getBean()方法从Spring容器中获取对象,默认为单例的。


    ②依赖注入


    它可以降低类之间的耦合性,有两种注入方式:

  • set注入,在配置文件中使用<property>节点

  • set注入

  • · 构造方法注入,在配置文件中使用<constructor-arg>节点

  • 构造方法注入

  • 下面举个例子来说明一下什么是依赖注入:


    假设类A因功能F需要调用类B,传统的程序中,我们就会去new一个类B的对象,因而类A就会依赖类于类B,这就是说如果类B不存在,则类A也就无法使用。而使用依赖注入以后,类A只需要去调用实现功能F接口的一个实现类,这个实现类可能是类B,C等等,具体调用谁是有Spring的配置文件决定的,这样类A就不再依赖于类B。
    我们可以这样理解控制反转:
    资源不是由使用资源的双方进行管理,而是由不使用资源的第三方(即Spring容器)进行管理,这样做的好处是:

  • 资源集中管理,实现资源的可配置与易管理

  • 降低使用资源双方的依赖程度

  • 在传统程序中,当某个角色需要另外一个角色协助时,由调用者来创建被调用者的实例。而在Spring中,创建被调用者的的工作不再由调用者来完成,而由第三方Spring容器来完成,所以称为控制反转,Spring容器创建被调用者的实例,然后注入调用者,所以又称为依赖注入。


    ③面向切面编程

    AOP在Spring中主要表现在两个方面:

  • 提供声明式事务管理

  • Spring支持用户自定义切面

  • 面向切面编程是对面向对象编程(OOP)的补充。面向对象编程将程序分解成为各个层次的对象,面向切面编程将程序运行过程分解成各个切面。面向切面编程基于动态代理实现,降低了类直接的耦合程度。Spring的事务管理就是基于AOP实现的。

    免费资源教程

eakoei
推荐于2017-05-14 · TA获得超过130个赞
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
spring:
1)开源框架
2)IoC(控制反转),将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合
3)AOP 将安全,事务等于程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性

IoC和AOP是spring最重要的两个特性,面试官差不多就看这个吧,至于spring mvc之类的估计面试官不一定感兴趣
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiaojiaoy
2009-04-29
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

参考资料: http://www.ibm.com/developerworks/cn/java/wa-spring1/

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wkaca7114
2009-04-30
知道答主
回答量:34
采纳率:0%
帮助的人:14.7万
展开全部
我只知道它是一个开源的框架
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式