1、Spring实现了工厂模式的工厂类,这个类名为BeanFactory(接口),
在程序中通常用他的子类ApplicationContext。
Spring相当于一个大的工厂类,在其配置文件中通过<bean>元素配置用于
创建实例对象的类名和实例对象的属性。

工厂模式是一种生产对象型的设计模式,有了工厂模式后,当需要某个类的
对象时,就不再需要new指定的类,而是调用工厂中的方法即可。也就不需要
关心对象的创建过程。甚至有时候也许你需要的对象只要是某种大分类的类型
就可以了,而不必是某个指定的类型。不会过渡依赖某个类,这些类都是
易于被替换的,以提高整个项目的可维护性。

2、Spring提供了对IOC(控制反转)良好支持,IOC也是一种编程思想,
是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。 
IOC就是对对象的创建、维护、销毁等生命周期的控制,这个过程一般是
由我们的程序去主动控制。
DI也是IOC的重要实现。一个对象的创建往往会涉及到其他对象的创建,
这就是依赖。IOC机制既然负责了对象的创建,
那么这个依赖关系也就必须由IOC容器负责起来。
负责的方式就是DI——依赖注入,通过将依赖关系写入配置文件,
然后在创建有依赖关系的对象时,由IOC容器注入依赖的对象。
如在创建A时,检查到有依赖关系,IOC容器就把A依赖的对象B
创建后注入到A中(组装,通过反射机制实现),然后把A返回给对象请求者,完成工作。

3、Spring提供了对AOP技术的良好封装,AOP称为面向切面编程,
就是系统中有很多各不相干的类的方法,
在这些众多方法中要加入某种系统功能的代码,
如加入日志,权限判断,异常处理,这种应用称为AOP。

实现AOP功能采用的是代理技术,客户端程序不再调用目标,
而调用代理类,代理类与目标类对外具有相同的方法声明。

有两种方式可以实现相同的方法声明,一是实现相同的接口,
二是作为目标的子类。在JDK中采用Proxy类,产生动态代理的
方式为某个接口生成实现类,如果要为某个类生成子类,则采用CGLIB。

系统功能的代理以Advice对象进行提供,要创建出代理对象,
至少需要目标类和Advice类。Spring提供了这种支持,
只需要在Spring配置文件中配置这两个元素即可实现代理和AOP功能。

面试之谈谈你对Spring的理解相关推荐

  1. 谈谈你对 Spring 的理解

    谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生. Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一个 ...

  2. 程序员面试怎么回答面试官:你对Spring的理解?

    spring呢,是pivotal公司维护的一系列开源工具的总称,最为人所知的是spring mvc,事实上,他们都是基于spring framework,并且再其上继续增强,为某一方面服务的java组 ...

  3. 谈谈你对Spring的理解?

    认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP( ...

  4. 面试题谈谈你对spring的理解

    1.spring为什么出现. spring的出现是为了解耦,我们在学习java初期,相信很多小伙伴都使用的是JSP+Servlet+MySQL+JDBC技术,在操作dao层的时候,每次都需要实例化一次 ...

  5. 谈谈你对Spring的理解

    Spring 是一个开源框架,为简化企业级应用开发而生 Spring可以实现java模块化开发,贯穿表现层,业务层,逻辑层,实现了各个层之间的解耦合关系 Spring 是一个 IOC 和 AOP 容器 ...

  6. MySQL面试:谈谈你对聚簇索引的理解

    通俗的讲 聚簇索引: 将数据存储和索引放到了一块,找到了索引也就找到了数据 一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引. 非聚簇索引: 将数据存储于索引分开结构,索引结构的叶子节 ...

  7. 百度面试官:来聊聊Spring吧

    文章目录 Spring入门和IOC介绍 1. Spring介绍 1.1侵入式概念 1.2 松耦合概念 1.3 切面编程 2. 引出Spring 2.1 IOC控制反转 3.Spring模块 4. Co ...

  8. 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?

    04谈谈你对分布式的理解,为什么引入分布式? 引言 刚刚毕业第一份工作,没接触过分布式微服务相关的知识,后来换工作才了解到这些,面试官看了我简历里写了分布式相关,就开始揪住这个问题问,虽然一知半解地说 ...

  9. 谈谈我对Spring IOC的理解

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

最新文章

  1. Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to
  2. 【转】用示例说明索引数据块中出现热块的场景,并给出解决方案
  3. python从网上获取数据失败怎么解决_求助:scrapy爬取数据失败,反复调试都不成功...
  4. (转)Linux环境变量的设置和查看方法
  5. 【HDU - 5914 】Triangle (打表 或 set维护)
  6. java 线程停止在那个为止_java停止线程
  7. Repeater控件里面取不到CheckBox的值
  8. iTunes是什么意思
  9. python写入txt,读取txt,拷贝txt文件
  10. 自动编译 打包 签名 android程序
  11. 太赞了!终于有人把怎么在IDEA中使用Java热部署插件JRebel讲清楚了...
  12. python商品总数抹零_销售发货单
  13. Unity游戏开发:对话系统的实现
  14. Excel表格中身份证号码显示不全如何解决
  15. win10配置更新怎么关闭计算机,如何关闭win10系统自动更新功能?教你彻底关闭win10自动更新方法...
  16. 【翻译】十大要避免的Ext JS开发方法
  17. echarts实现自定义扩展地图-中国七大区域图
  18. 入门PerfDog性能测试
  19. 使用mysql查询显示行号
  20. pom 备注_POMGH-25POMGH-25

热门文章

  1. 拒绝平庸——打造产品气质三步法
  2. chatgpt 与传统3D建模对比分析
  3. C语言 机房收费管理系统
  4. 华为云搭建pptpd
  5. 管理工作中的“七种浪费”【转】
  6. 天呐!java从键盘给数组赋值
  7. 华为开发者大会 2022 开发者主题演讲与技术分论坛干货分享(附课件)
  8. 【MyBatis-Plus】多租户情况下使用 CONVERT(name USING gbk)实现拼音字母排序报错
  9. 神奇的口袋(背包问题)
  10. Team work(纪加入互动力工作室一年)