Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分 Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高依赖注入和IoC使得JDBC操作简单化 Spring是开源的免费的 Spring使得对象管理集中化合简单化 2.描述一下Spring中实现DI(Dependency Injection)的几种方式 方式一:Type2 IoC: Setter injection对象创建之后,将被依赖对象通过set方法设置进去 使用尺度:那些必须的属性用构造注入非必须用set注入;
3.简述你对IoC(Inversion of Control)的理解
一个类需要用到某个接口的方法,我们需要将类A和接口B的实现关联起来,最简单的方法是类A中创建一个对于接口B的实现C的实例,但这种方法显然两者的依赖(Dependency)太大了。而IoC的方法是只在类A中定义好用于关联接口B的实现的方法,将类A,接口B和接口B的实现C放入IoC的 容器(Container)中,通过一定的配置由容器(Container)来实现类A与接口B的实现C的关联。
4.Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法。
在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor。
5.请介绍一下Spring的事务管理 spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。 编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象.
6.如何在Spring的applicationContext.xml里面使用JNDI而不是datasource?
可以使用”org.springframework.jndi.JndiObjectFactoryBean”来实现。示例如下:
org.springframework.jdbc.datasource.DriverManagerDataSource”数据源来配置数据库驱动。示例如下:
8.Spring里面applicationContext.xml文件能不能改成其他文件名? ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。缺省情况下,它会在WEB-INF/applicationContext.xml文件找Spring的配置。 你可以通过定义一个<context-param>元素名字为”contextConfigLocation”来改变Spring配置文件的位置。示例如下: <listener> </listener-class> 9.如何在web应用里面配置spring?
<listener>
10.解释一下Dependency injection(DI,依赖注入)和IOC(Inversion of control,控制反转)?
参考答案:依赖注入DI是一个程序设计模式和架构模型, 一些时候也称作控制反转,尽管在技术上来讲,依赖注入是一个IOC的特殊实现,依赖注入是指一个对象应用另外一个对象来提供一个特殊的能力,例如:把一个数据库连接已参数的形式传到一个对象的结构方法里面而不是在那个对象内部自行创建一个连接。控制反转和依赖注入的基本思想就是把类的依赖从类内部转化到外部以减少依赖
11.spring中的BeanFactory与ApplicationContext的作用和区别? 作用: 1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。 a. 国际化支持 12.如何在web环境中配置applicationContext.xml文件?
<listener>
13.如何配置spring+struts?
在struts-config.xml加入一个插件,通过它加载applicationContext.xml
14.spring+hibernate的配置文件中的主要类有那些?如何配置?
在myeclipse中先加入spring环境再加入hibernate环境。
15.在spring中如何配容器的事务管理,相关的类有那些?
Datasouce
16.在spring中如何配代码的事务管理?
Datasouce
17.spring的jdbc与传统的jdbc有什么区别,其核心类有那些? Spring的jdbc:节省代码,不管连接(Connection),不管事务、不管异常、不管关闭(con.close() ps.close ) JdbcTemplate(dataSource):增、删、改、查 18.spring与ejb2.0的事务管理比较的优缺点? 测试: 19.Spring如何实现事件处理? 事件 20.如何加入Spring到web框架中?
在web.xml中加入如下同容,在启动web服务器时加载/WEB-INF/applicationContext.xml中的内容。
21.Spring如何实现资源管理?
使用
22.Spring中ApplicationContext的作用是什么?
beanFactory
BeanFactory:产生一个新的实例,可以实现单例模式
拦截器: 代理
25.Spring和Struts的区别?
strusts:是一种基于MVC模式的一个web层的处理。
26.Struts,Spring,Hibernate面试题总结
http://blog.csdn.net/David8631/archive/2008/07/19/2676615.aspx Hibernate工作原理及为什么要用? 原理: 1. 读取并解析配置文件 为什么要用: * 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 Hibernate是如何延迟加载? * Hibernate2延迟加载实现:a)实体对象 b)集合(Collection) 当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 说下Hibernate的缓存机制 * 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存 a)应用及缓存 b)分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 * 属性查询 如何优化Hibernate? * 使用双向一对多关联,不使用单向一对多 Struts工作机制?为什么要使用Struts? 为什么要用: 基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件 说下Struts的设计模式 单例模式 Factory(工厂模式): 定义一个基类===》实现基类方法(子类通过不同的方法)===》定义一个工厂类(生成子类实例) ===》开发人员调用基类方法 Proxy(代理模式) spring工作机制及为什么要用? 为什么用: IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用 其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。
1.struts 2.MVC,分析一下struts是如何实现MVC的 3.struts中的几个关键对象的作用(说说几个关键对象的作用) 4.spring 5.Hibernate有哪几种查询数据的方式 6.load()和get()的区别 回答: 2.struts是用一组类,servlet 和jsp规范实现mvc的 3.ActionFrom ActionServlet Action struts-config.xml 4.spring的核心就是IOC,通过指定对象的创建办法,描述对象与服务之间的关系,而不生成对象 5.3种,hql 条件查询() 原生sql 6.load()方法认为该数据一定存在,可以放心的使用代理来延时加载 ,如果使用过程中发现了问题,就抛出异常; 28 一些Spring和Hibernate的面试题(附答案)
1、 简述你对IoC(Inversion of Control)的理解,描述一下Spring中实现DI(Dependency Injection)的几种方式。 2、 Spring的Bean有多种作用域,包括: singleton、prototype、request、session、global session、application、自定义 3、 简单描述Spring framework与Struts的不同之处,整合Spring与Struts有哪些方法,哪种最好,为什么? 4、 Hibernate中的update()和saveOrUpdate()的区别 5、 Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。 答案: 1、好莱坞原则€€€€不要打电话找我,我会打给你的。IoC将创建的职责从应用程序代码搬到了框架中。Spring对Setter注入和构造方法注入提供支持。(详见http://martinfowler.com/articles/injection.html,以及http: //www.redsaga.com/spring_ref/2.0/html/beans.html#beans-factory- collaborators) 2、 除application(详见Spring framework 2.0 Reference的3.4节bean的作用域) 3、 Spring是完整的一站式框架,而Struts仅是MVC框架,且着重于MVC中的C。Spring有三种方式整合Struts:使用 Spring 的 ActionSupport 类整合 Struts;使用 Spring 的 DelegatingRequestProcessor 覆盖Struts 的 RequestProcessor;将 Struts Action 管理委托给 Spring 框架,动作委托最好。(详见使用Spring更好地处理Struts 动作) Spring 2.0新增一种方式:AutowiringRequestProcessor。(详见http://www.javaeye.com/topic/24239) 4、 saveOrUpdate()方法可以实现update()的功能,但会多些步骤,具体如下: 如果对象在该session中已经被持久化,不进行操作; 对象的标识符属性(identifier property)在数据库中不存在或者是个暂时的值,调用save()方法保存它; 如果session中的另一个对象有相同的标识符抛出一个异常; 以上皆不符合则调用update()更新之。 5、 在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。 在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor。(详见Spring framework 2.0 Reference的12.2节Hibernate) 声明式事务需声明事务管理器,在context中设置指定属性,用确定和。 29 请你谈谈SSH整合
SSH:
30 在Spring框架中如何更加高效的使用JDBC 使用Spring框架提供的模板类JdbcTemplete可以是JDBC更加高效 代码如下:JdbcTemplate template = new JdbcTemplate(myDataSource); DAO类的例子: public class StudentDaoJdbc implements StudentDao { public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { 配置文件: <bean id=”jdbcTemplate” class=”org.springframework.jdbc.core.JdbcTemplate”> 31 请介绍一下Spring框架中Bean的作用域
在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称 prototype),Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean。 <bean id=”role” class=”spring.chapter2.maryGame.Role” scope=”singleton”/> 这里的scope就是用来配置spring bean的作用域,它标识bean的作用域。 在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称 prototype),Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean。当然,Spring2.0对 Bean的类型的设计进行了重构,并设计出灵活的Bean类型支持,理论上可以有无数多种类型的Bean,用户可以根据自己的需要,增加新的Bean类型,满足实际应用需求。 32 请介绍一下Spring框架中Bean的生命周期
单例时 IOC控制bean的整个生命周期,作用域相同. 多例时 IOC控制创建对象,依赖关系注入,销毁由用户自己管理,作用域不同.
33 Spring如何获取Bean 通过xml配置文件 bean配置在xml里面,spring提供多种方式读取配置文件得到ApplicationContext. 第一种方式:FileSystemXmlApplicationContext 通过程序在初始化的时候,导入Bean配置文件,然后得到Bean实例: 第二种方式:WebApplicationContextUtil 在B/S系统中,通常在web.xml初始化bean的配置文件,然后由WebAppliCationContextUtil得到ApplicationContext.例如: 其中 servletContext sc 可以具体 换成 servlet.getServletContext()或者 this.getServletContext() 或者request.getSession().getServletContext(); 另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象: WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); Spring框架有七个模块组成组成,这7个模块(或组件)均可以单独存在,也可以与其它一个或多个模块联合使用,主要功能表现如下: ? Spring 核心容器(Core):提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。 ? Spring AOP:通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。 ? Spring ORM:Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。 ? Spring DAO:JDBC DAO抽象层提供了有意义的异常层次的结构,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低 了需要编写的异常代码数量(例如,打开和关系连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层结构。 ? Spring WEB:Web上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。 ? Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。 ? Spring MVC:Spring的MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol 35 使用Spring有什么好处 ◆Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题,。 ◆Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。 36 Spring面试:什么是Spring, 它有什么特点 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并 且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦 合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不 是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
|
Spring中不得不知道的知识
最新推荐文章于 2023-10-30 10:06:57 发布