Spring基础问答

摘自网络java

 

1  Spring工做原理web

1.首先读取配置文件到容器中。spring

2.经过java反射机制将配置文件中描述的对象转换成java对象;数据库

3.将这些java对象按照配置文件中的定义将他们注入到各自匹配的对象中去。编程

2  为何要用Spring设计模式

Spring的目的是让对象与对象之间的关系没有经过代码来关联,经过配置文件说明管理。Spring容器的核心功能是IOCAOPIOC即控制反转,动态注入。使用对象以前没必要使用new关键字本身建立,从IOC容器中直接获取。安全

AOP即面向切面编程,提供对某一类对象的事物管理服务。(调用该类具体方法的先后调用指定模块)网络

3  Spring中的BeanFactoryApplicationContext的做用有哪些?session

BeanFactory负责建立和分发各类bean;架构

在建立bean的同时负责协调bean之间的关系,从而下降bean之间的耦合性;

调用用户定义的建立和销毁方法,负责Bean的生命周期;

ApplicationContext提供了文本解析工具,包括对国际化的支持。

提供了载入文件资源的通用方法,如载入图片。

向注册为监听器的Bean发送事件。

      

4  如何在spring中实现国际化?

添加Spring表单标签库tld文件

web.xml文件中添加该标签库的引用

建立资源库文件ApplicationResources.properties利用native2ascii工具将目标文件转换为要国际化的语言类别

applicationContext.xml文件中添加资源库配置

标签化JSP页面中的文字

5  使用spring有什么好处?

1.提供了一种管理对象的方法,能够把中间层对象有效地组织起来。一个完美的框架黏合剂
  2. 采用了分层结构,能够增量引入到项目中。
  3. 有利于面向接口编程习惯的养成。
  4. 目的之一是为了写出易于测试的代码。
  5. 非侵入性,应用程序对Spring API的依赖能够减至最小限度。
  6. 一致的数据访问介面。
  7. 一个轻量级的架构解决方案。

6  什么是spring?它有什么特色?

Spring是轻量级的控制反转和面向切面的容器框架。

       具备分层的体系结构,能够选择本身须要的功能模块。

       简化系统架构的设计,提供管理业务对象的方法。

       不只不会对其余框架有依赖性,还提供对其余框架(StrutsHibernate)的更好的粘合的机制

7  Hibernate应用与传统JDBC应用的比较

Hibernatejava对象/关系数据库映射工具。JDBCJava Data Base Connectivity,java数据库链接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

(1).关系型数据库与JDBC是一对一的关系,只须要简单配置就能够实现,因此Hib系,Hibernate与关系型数据库是一对多的关ernate是跨数据库平台的。

(2)代码中,Hibernate能够不使用本地化SQL语句完成对数据的SUDI,与数据库是松耦合,JDBC不能。

(3)Hibernate很好地兼容了JDBC,能够在代码中直接嵌入JDBC API,但不提倡这样作。

(4)Hibernate拥有数据链接池实现机制(sessionFactory)。

8  什么是aopaop的做用是什么?

AOP即面向切面编程。AOP提供对某一类对象的事物管理服务。(调用该类具体方法的先后调用指定模块)

请阐述Spring框架和EJB相比较,各自的优缺点?

EJB 是优良的业务对象分布式框架,EJB容器具备事务管理,安全机制功能;

EJB是重量级的,部署麻烦;

EJB 代码不能脱离EJB 容器;

购买EJB 容器价钱昂贵,启动缓慢;

Spring框架是轻量级的架构,支持EJB并对其实现更加简化,实现了解耦,并脱离了容器;

中断了应用程序的逻辑,使代码变得不完整,不直观。
将本来应该代码化的逻辑配置化,增长了出错的机会以及额外的负担。

失去了IDE的支持。
调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。

10 Spring IoC核心模式中,试比较二种推荐的依赖注入方式的相同点和不一样点?

       设置注入和构造注入都具备无侵入性的特色。

       构造注入:

构造注入避免了烦琐的setter方法的编写,从而使得组件被建立后处于相对稳定状态;

       类之间的关联关系仅在构造函数中表达,使得系统层次清晰;

       经过构造注入,能够在构造函数中决定依赖关系得注入顺序,优先依赖的先注入;

       设置注入:

       经过setter方法设定依赖关系显得更加直观,天然;

       若是依赖关系(或继承关系)较为复杂,设置注入则更为简洁;

       对于某些第三方类库,有求组件必须提供默认的构造函数,此时构造注入就有了局限性,采用设置注入为佳。

 

11  SpringBean的自动装配都有哪些选择?

1-->byName模式:这种模式是经过bean的属性名字进行自动装配的,也就是说在xml配置文件中查找一个与将要装配的属性相同名字的bean2:--->byType模式

byType就是指的若是在.xml配置文件中有一个与属性类型同样的Bean,spring就会自动装配这个属性,若是要是多于一个这样的bean的话,则程序会抛出异常.咱们知道要使用byName模式的话BeanID 必须和属性名称想对应,若是咱们使用byTpe模式的话,则不用考虑BeanID名称与属性名称的问题了.对于byType匹配模式咱们就不在给出范例了,你们只要把上面两个范例中的byName该成byType便可.

3:--->constructor
constructor
模式就是根据构造函数的参数进行自动装配、

4:--->autodetect模式
autodetect
模式就是指经过对Bean检查类的内部来选择是使用constructor模式装配仍是使用byType模式装配,若是先找到的是constructor模式那么就使用constructor模式进行装配,若是没有constructor,而找到了byType,那么就使用byType,一样这种模式也不给出具体范例了,你们按照上述范例进行改造如下就能够了,这样也能够锻炼如下你们的动手能力,若是有什么问题,你们能够按照首页上给出的联系方式与我联系.接下来我门来看如下最后一种装配模式.

5:--->no模式
相信你们从字面上的意思理解,就能够知道这种模式的意思了,既不使用自动装配模式,这种也是默认的配置,在不少企业级的应用中并不鼓励使用自动装配模式,由于它对于Bean之间的参考依赖关系不清晰

 


12  Spring 框架的个模块功能

组成 Spring 框架的每一个模块(或组件)均可以单独存在,或者与其余一个或多个模块联合实现。每一个模块的功能以下:

1)核心容器(Spring Core

    这是Spring框架最基础的部分,它提供了依赖注入特征来实现容器对Bean的管理。这里最基本的概念是BeanFactory,这是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用IOC将应用配置和依赖说明从实际的应用代码中分离出来。

2Spring 上下文(Spring Context

    核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架,这个模块扩展了BeanFactory的概念,增长了对国际化消息,事件传播及验证的支持,同时提供了电子邮件、JNDI访问、远程等企业服务。

3Spring 的面向方面的编程(Spring AOP

    Spring在它的AOP模块中提供了面向切面编程的丰富支持。这个模块是在Spring应用中实现切面编程的基础。为了确保Spring与其它AOP框架的互用性,SpringAOP支持基于AOP联盟定义的APIAOP是一个开源项目,经过定义一组共同的接口和组件来促进AOP的使用以及不一样的AOP实现之间的互用性。同时将元数据编程引入了Spring,能够为你的源代码增长注释,指示Spring在何处以及如何应用于切面函数。

4Spring JDBC DAO 抽象层(Spring DAO

    使用JDBC常常导至大量的重复代码,取得链接、建立语句、处理结果集,而后关闭链接。SpringJDBCDAO模块抽取了这些重复代码,所以你能够保持你的数据库访问代码干净简洁,而且能够防止因关闭数据库资源失败而引发的问题。

5Spring ORM 的对象关系工具(Spring ORM

    对那些更喜欢使用对象/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块。Spring并不试图实现它本身的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括:HibernateJDOIbatis SQL映射。

6Spring Web 模块(Spring Web

    Web上下文模块创建于应用上下文模块之上,提供了一个适合于Web应用于的上下文。另外,这个模块还提供了一些面向服务支持,它也提供了Spring和其它Web框架的集成,好比:Struts.

7Spring MVC 框架(Spring Web MVC

    Spring为构建成Web应用提供了一个功能全面的MVC框架。虽然Spring能够很容易地与其它MVC框架集成,例如Struts,但SpringMVC框架使用IOC对控制逻辑和业务对象提供了彻底的分离。

   Spring真正的精华是它的Ioc模式实现的BeanFactoryAOP

 

 

13  轻量级的J2EE应用开发框架的具体体现(Spring轻量级在J2EE应用开发框架的具体体现

Spring Framework解决了许多在J2EE开发中常见的问题。

       Springjar包通常不超过1M

       Spring 简化并融合了EJB

       Spring 经过配置文件管理Bean文件

 

14  非侵入式的体现以及如何达到非侵入式的设计目标

1非侵入式的体现

q     容许在应用系统中自由地选择和组装Spring的各功能模块,而且不强制要求应用中的类必须从Spring 的系统API中的某个类来继承或者实现某个接口。

q     同时提供和其它框架集成的接口,如与HibernateStruts 的集成等;

2)如何达到非侵入式的设计目标

p     应用JavaReflection机制

<property name=“bean1”><ref bean=“anotherbean”/></property>

p     并配合使用Spring中的核心的BeanWrapperBeanFactory类组件---实现对象的建立和属性注入

15  为何要面向接口进行设计

面向接口编程是面向对象的核心,面向接口设计能够提供不一样灵活的子类实现,从而减小耦合性,加强代码稳定和健壮性。

16  模式和框架的区别

模式是一种设计思想,提供一种指导从而作出优良的设计方案;

框架是一种软件,一组组件;

设计模式比框架更抽象

框架比设计模式更加特征化

设计模式是比框架更小的体系结构元素

17  Struts运行原理

?          客户端请求*.do的路径。

?          Struts框架的中心控制器(一般为ActionServlet类的实例,或者用户自定义的ActionServlet的子类的实例)截获到客户请求。

?          中心控制器根据struts-config.xml文件中配置的映射信息将请求转发给相应的Action组件对象来处理。

?          若是请求页面配置了对应的ActionForm组件,控制器类还会把表单数据填入ActionForm组件。

?          得到路径对应的Action组件的实例。

?          调用Action组件实例的execute方法处理请求,并传ActionForm对象。

?           Action组件对象提取ActionForm组件对象中包含的请求数据,而后调用封装了业务逻辑的模型组件进行业务逻辑处理。

?           Action对象根据模型组件的处理结果返回相应的ActionForward对象给中心控制器。

?          中心控制器根据struts-config.xml文件中的配置信息肯定要跳转的页面。

?          跳转到ActionForward页面,呈现用户数据。

18  StrutsActionForm有什么做用?

1ActionForm Bean是一种JavaBean,除了具备一些JavaBean的常规方法,还包含一些特殊方法,用于验证HTML表单数据以及将其属性从新设置为默认值。
2
Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。
3
Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递Controller组件,Controller组件能够对ActionForm Bean中的数据进行修改,JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,从新设置HTML表单。 

19        简述手工搭建Struts开发部署环境步骤?

一、            添加支持的Struts jar

二、            添加Strutstld标签库文件

三、            建立struts-config.xml

四、            web.xml文件中对StrutsActionServlet进行配置声明

相关文章
相关标签/搜索