对spring的理解

来源:互联网 发布:数据挖掘公司排名 编辑:程序博客网 时间:2024/05/16 09:53

1.说说你对spring的理解

说法1:

个人觉得spring就是一个容器,这个容器用于生产bean对象,并对其管理。如果看玄幻小说的话,就好比天道和生灵的关系,天道创建我们,管理我们,为我没提供资源,直到生命结束。说到spring 我们有必提一下他其中网们经常用到的核心配件,ioc 和 aop ,ioc(控制反转) 为们都知道他是把为们之前手动new对象的过程和管理对象的过程交给了spring,也就是控制权的转换,这样减轻了我们程序员的代码量,提高了开发效率,ioc就像天道的执法者,帮助我们做一些事情,aop技术是建立在java语言的反射机制与动态代理上的,他有两种动态代理 方式,分别是java自身的动态代理和cglib代理,应为我们一般都是将事物切进service层的所以一般采用的是java自身的动态代理,实现一个 InvocationHandler接口创建自己的调用处理器,通过proxy类来指定classloader对象和一组interface创建动态代理类通过反射机制来获取动态代理的构造函数,其唯一参数类型是调用处理器接口类型,通过构造函数来创建动态代理实例,构造调用时处理器对象作为参数传入。cglib的话一般使用是目标对象没有实现接口,比如说我们的controller 实现层一般不写接口 这个时候我们就需要用到cglib了

 

说法2: 里面只说了ioc

就我了解到的关于spring的东西并不多,现在还是停留在会用的阶段,但是我觉得spring框架就是一个容器,这个容器最主要的作用就是创建对象,以前我们创建对象时通过new关键字,现在不需要这么麻烦了,只需要找到这个容器就可以找到你需要的对象,其实就是一个factory,这个工厂可以提供很多我们需要的对象,我们只需要知道对象对应的名字就行了






关于spring可能会被问到的有哪些?

1.  Spring依赖注入有哪几种方式。
答:构造注入、接口注入、Set方法注入、映射注入。
2.      对Spring 的理解. (中)
答:Spring是一个容器框架,其核心机制在于IOC和AOP

3  Spring自带的AOP有哪些。
答:@AspectJ和基于Schema的两种切面定义的AOP

 

4.  Spring里的声明式事务是怎么实现的。
先定义一个类,实现MethodBeforeAdvice、AfterReturningAdvice等接口。
Spring配置文件里配置advice的bean,然后配置代理类,在类里注入advice和目标类。

5.Spring原理(中)
spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间的藕合度。它的原理是在applicationContext.xml加入bean标记,在bean标记中通过class属性说明具体类名、通过property标签说明该类的属性名、通过constructor-args说明构造子的参数。其一切都是返射,当通过applicationContext.getBean("id名称")得到一个类实例时,就是以bean标签的类名、属性名、构造子的参数为准,通过反射实例对象,唤起对象的set方法设置属性值、通过构造子的newInstance实例化得到对象。正因为spring一切都是反射,反射比直接调用的处理速度慢,所以这也是spring的一个问题。
spring第二大作用就是aop,其机理来自于代理模式,代理模式有三个角色分别是通用接口、代理、真实对象代理、真实对象实现的是同一接口,将真实对象作为代理的一个属性,向客户端公开的是代理,当客户端调用代理的方法时,代理找到真实对象,调用真实对象方法,在调用之前之后提供相关的服务,如事务、安全、日志。

 

6.Spring的核心机制是什么,分别有什么作用?
:    
(1)DI (Dependency Injection)  ,降低耦合度,便于程序功能扩展,也体现了而向对象设计原则中的开闭原则。
(2)AOP (Aspect Oriented Program),集中处理程序中的公共问题,比如事务、权限、业务日志等,可以将业务逻辑和这些公共问题分开处理。

 

7.Spring框架分为哪七大模块,各模块的主要功能作用是什么
七大模块,如下:
1. Spring Core: Core封装包是框架的最基础部分,提供IOC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
2.Spring Context: 构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。
3.Spring DAO:  DAO (Data AccessObject)提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plainold Java objects)都适用。
4.Spring ORM: ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。
5.Spring AOP: Spring的 AOP 封装包提供了符合AOP Alliance规范的面向方面的编程实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中。
6.Spring Web: Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servletlisteners进行IOC容器初始化和针对Web的ApplicationContext。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。
7.Spring Web MVC: Spring中的MVC封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和WebForm之间。并且,还可以借助Spring框架的其他特性。


原创粉丝点击