面试中问Spring工作原理

面试中问Spring工作原理

内部最核心的就是IOC了,

动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的。
Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象进行监督和控制(也就是
在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩 充的功能。这些都是通过配置类达到的。
Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明

管理的( Spring根据这些配置内部通过反射去动态的组装对象)
要记住: Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。Spring里用的最经典的一个设计模式就是;模板方法模式。( 这里我都不介绍了,是一个很常用的设计模式)
Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了也就基本上掌握了Spring.Spring AOP与I0C
IOC(Inversion of control):控制反转1. IOC :
概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
核心: bean工厂; 在Spring中, bean工厂创建的各个实例称作bean

AOP(Aspect-Oriented Programming):

面向方面编程代理的两种方式:静态代理:针对每个具体类分别编写代理类;针对一个接口编写一一个代理类;
动态代理:针对一个方面编写一个InvocationHandler ,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类Spring优缺点
它是一个开源的项目,而且目前非常活跃;它基于loC ( Inversionof Control ,反向控制)和AOP的构架多层j2ee系统的框架,
但它不强迫你必须在每一层中必须使用Spring ,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统的接口,采用1oC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等优点

a.Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的API特制的framework,Spring致力于解决剩下的问题。
b.Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一一个很大的问题,它降低了系统的可测试性和面向对象的程度。
C.通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性。Inversion of Control的使用(在下面讨论)帮助完成了这种简化。
d.通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。

e.Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring.f.使用Spring构建的应用程序易于单元测试,
g.Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码,
h.Spring帮助你解决许多问题而无需使用EJB. Spring能提供- 种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。
i.Spring为数据存取提供了一个致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibemate ) .

Spring确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大价值的。
缺点: jsp中要写很多代码、控制器过于灵活,缺少-一个公用控制器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值