spring面试题
- 格式:doc
- 大小:92.00 KB
- 文档页数:15
Spring15个经典⾯试题Spring15个经典⾯试题总结Spring框架的15个经典⾯试题。
什么是Spring框架?Spring是⼀种轻量级框架,旨在提⾼开发⼈员的开发效率以及系统的可维护性。
我们⼀般说的Spring框架就是Spring Framework,它是很多模块的集合,使⽤这些模块可以很⽅便地协助我们进⾏开发。
这些模块是核⼼容器、数据访问/集成、Web、AOP(⾯向切⾯编程)、⼯具、消息和测试模块。
⽐如Core Container中的Core组件是Spring所有组件的核⼼,Beans组件和Context组件是实现IOC和DI的基础,AOP组件⽤来实现⾯向切⾯编程。
核⼼技术:依赖注⼊(DI),AOP,事件(Events),资源,i18n,验证,数据绑定,类型转换,SpEL。
测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。
数据访问:事务,DAO⽀持,JDBC,ORM,编组XML。
Web⽀持:Spring MVC和Spring WebFlux Web框架。
集成:远程处理,JMS,JCA,JMX,电⼦邮件,任务,调度,缓存。
语⾔:Kotlin,Groovy,动态语⾔。
列举⼀些重要的Spring模块?下图对应的是Spring 4.x的版本,⽬前最新的5.x版本中Web模块的Portlet组件已经被废弃掉,同时增加了⽤于异步响应式处理的WebFlux组件。
Spring Core:基础,可以说Spring其他所有的功能都依赖于该类库。
主要提供IOC和DI功能。
Spring Aspects:该模块为与AspectJ的集成提供⽀持。
Spring AOP:提供⾯向⽅⾯的编程实现。
Spring JDBC:Java数据库连接。
Spring JMS:Java消息服务。
Spring ORM:⽤于⽀持Hibernate等ORM⼯具。
Spring Web:为创建Web应⽤程序提供⽀持。
Spring面试题和答案大全 Spring是个java企业级应用的开源开发框架。
作为一个个轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的。
因此在企业中应用较多,达内java培训()专家为大家总结一些spring问答知识,供大家面试时使用: 1.什么是spring? Spring是个java企业级应用的开源开发框架。
Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。
Spring框架目标是简化Java 企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
2.使用Spring框架的好处是什么? 轻量:Spring是轻量的,基本的版本大约2MB。
控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
容器:Spring包含并管理应用中对象的生命周期和配置。
MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
异常处理:Spring提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked异常。
3. Spring由哪些模块组成? 以下是Spring框架的基本模块: Core module Bean module Context module Expression Language module JDBC module ORM module OXM module Java Messaging Service(JMS) module Transaction module Web module Web-Servlet module Web-Struts module Web-Portlet module 4.核心容器(应用上下文)模块。
Spring系列⾯试题(附答案)1、不同版本的 Spring Framework 有哪些主要功能?2、什么是 Spring Framework?Spring 是⼀个开源应⽤框架,旨在降低应⽤程序开发的复杂度。
它是轻量级、松散耦合的。
它具有分层体系结构,允许⽤户选择组件,同时还为 J2EE 应⽤程序开发提供了⼀个有凝聚⼒的框架。
它可以集成其他框架,如Structs、Hibernate、EJB 等,所以⼜称为框架的框架。
3、列举 Spring Framework 的优点。
由于 Spring Frameworks 的分层架构,⽤户可以⾃由选择⾃⼰需要的组件。
Spring Framework ⽀持 POJO(Plain Old Java Object) 编程,从⽽具备持续集成和可测试性。
由于依赖注⼊和控制反转,JDBC 得以简化。
它是开源免费的。
4、Spring Framework 有哪些不同的功能?轻量级 - Spring 在代码量和透明度⽅⾯都很轻便。
IOC - 控制反转AOP - ⾯向切⾯编程可以将应⽤业务逻辑和系统服务分离,以实现⾼内聚。
?容器 - Spring 负责创建和管理对象(Bean)的⽣命周期和配置。
MVC - 对 web 应⽤提供了⾼度可配置性,其他框架的集成也⼗分⽅便。
?事务管理- 提供了⽤于事务管理的通⽤抽象层。
Spring 的事务⽀持也可⽤于容器较少的环境。
JDBC 异常 - Spring的 JDBC 抽象层提供了⼀个异常层次结构,简化了错误处理策略。
5、Spring Framework 中有多少个模块,它们分别是什么?Spring 核⼼容器–该层基本上是Spring Framework 的核⼼。
它包含以下模块:· Spring Core· Spring Bean· SpEL (Spring Expression Language)· Spring Context数据访问/集成–该层提供与数据库交互的⽀持。
SpringBootWebFlux框架面试题SpringBootWebFlux是基于Reactive Stream规范构建的非阻塞的Web框架。
在面试中,面试官可能会提问关于SpringBootWebFlux框架的知识点,包括其特性、用途、优势等等。
下面将对这些问题进行一一回答。
1. 什么是SpringBootWebFlux框架?SpringBootWebFlux框架是SpringBoot中的一个模块,用于构建响应式的、非阻塞的Web应用程序。
它基于Reactive Spring框架构建,能够处理高并发的请求,并提供高吞吐量和低延迟的性能。
2. SpringBootWebFlux和传统的Spring MVC有什么区别?SpringBootWebFlux和传统的Spring MVC都是用于构建Web应用程序的框架,但是它们的工作方式有所不同。
传统的Spring MVC使用基于Servlet的容器,并使用阻塞I/O模型来处理请求,而SpringBootWebFlux使用基于非阻塞I/O模型的服务器,利用异步处理请求,从而提供更好的性能和可伸缩性。
3. SpringBootWebFlux适用于什么样的场景?SpringBootWebFlux适用于需要处理大量并发请求的场景,尤其是对实时性要求较高的应用程序,例如实时推送、聊天室、监控系统等。
它还适用于需要处理高负载的应用程序,在这些场景下,SpringBootWebFlux能够更好地利用系统资源,提供更好的性能和可伸缩性。
4. SpringBootWebFlux的优势是什么?SpringBootWebFlux具有以下几个优势:- 高性能:基于非阻塞的I/O模型,能够处理大量并发请求,并提供高吞吐量和低延迟的性能。
- 响应式编程:支持响应式编程范式,能够以异步的方式处理数据流,提高代码的可读性和可维护性。
- 函数式端点:提供了函数式编程风格的API,开发者可以更简洁地定义和处理请求。
1 •什么是微服务?单个轻量级服务一般为一个单独微服务,微服务讲究的是专注某个功能的实现,比如登录系统只专注于用户登录方面功能的实现,讲究的是职责单一,开箱即用,可以独立运行。
微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的业务需求。
马丁福勒(Martin Fowler):就目前而言,对于微服务业界并没有一个统一的、标准的定义。
但通常而言,微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务。
每个服务运行在其独立的自己的进程中服务之间相互配合、相互协调,为用户提供最终价值。
服务之间采用轻量级通信。
每个服务都围绕具体业务进行构建,并能够独立部署到生产环境等。
另外应尽量避免统一的、集中的服务管理机制。
通俗的来讲:微服务就是一个独立的职责单一的服务应用程序。
在intellij idea工具里面就是用maven开发的一个个独立的module,具体就是使用 springboot 发的一个小的模块,处理单一专业的业务逻辑,一个模块只做一个事情。
微服务强调的是服务大小,关注的是某一个点,具体解决某一个问题 /落地对应的一个服务应用,可以看做是idea里面一个module。
比如你去医院:你的牙齿不舒服,那么你就去牙科。
你的头疼,那么你就去脑科。
一个个的科室,就是一个微服务,一个功能就是一个服务。
更多了解见: https:///sunming709424/article/details/80578559 业界大牛马丁福勒(Martin Fowler)讲解: https:///bliki/看不懂英文,这里有中文博客翻译的:https:///u013 970991/article/details/533339212 •微服务之间如何独立通讯的?同步通信:dobbo通过RPC远程过程调用、springcloud通过REST接口 json调用等。
spring boot面试题及答案做Java开发,没有人敢小觑 Spring Boot的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,不会?没用过?Sorry,我们不合适!今天小编就给大家整理了10道Spring Boot面试题,希望能够帮助到刚刚走出校门的小伙伴以及准备寻找新的工作机会的小伙伴。
1、什么是 Spring Boot?传统的 SSM/SSH 框架组合配置繁琐臃肿,不同项目有很多重复、模板化的配置,严重降低了 Java 工程师的开发效率,而 Spring Boot 可以轻松创建基于 Spring 的、可以独立运行的、生产级的应用程序。
通过对 Spring 家族和一些第三方库提供一系列自动化配置的 Starter,来使得开发快速搭建一个基于 Spring 的应用程序。
Spring Boot 让日益臃肿的 Java 代码又重回简洁。
在配合 Spring Cloud 使用时,还可以发挥更大的威力。
2、Spring Boot 中如何解决跨域问题?跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过(CORS,Cross-origin resource sharing)来解决跨域问题。
这种解决方案并非 Spring Boot 特有的,在传统的 SSM 框架中,就可以通过 CORS 来解决跨域问题,只不过之前我们是在XML 文件中配置CORS ,现在则是通过@CrossOrigin 注解来解决跨域问题。
3、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
spring mvc 面试题Spring MVC 是一个在 Java Web 应用程序开发中广泛使用的轻量级框架。
它基于 MVC(Model-View-Controller)设计模式,提供了一种优雅的方式来构建可扩展、易维护和高效的Web 应用程序。
在面试中,常常会被要求深入了解 Spring MVC 的工作原理和常见问题。
本文将就Spring MVC 面试中常见的问题进行讨论和解答。
一、Spring MVC 的工作原理在面试中,经常会被问到 Spring MVC 的工作原理。
下面是关于Spring MVC 的工作原理的简要说明:1. 客户端发送请求:客户端通过浏览器发送一个 HTTP 请求给服务器。
2. DispatcherServlet 接收请求:由于在 web.xml 中配置了 Spring 的DispatcherServlet,它会接收到客户端的请求。
3. HandlerMapping 进行请求映射:根据配置的 URL 映射规则,DispatcherServlet 会将请求映射到相应的处理器(Controller)上。
4. Controller 处理请求:处理器(Controller)负责处理请求,并返回一个 ModelAndView 对象。
5. ViewResolver 进行视图解析:根据配置的视图解析规则,ViewResolver 会将 ModelAndView 对象中的逻辑视图名解析为具体的视图(JSP 页面等)。
6. View 渲染视图:解析得到具体视图之后,View 负责渲染模型数据到视图上。
7. 返回响应:服务器将渲染后的视图返回给客户端。
了解 Spring MVC 的工作原理对于面试中的问题回答至关重要,这样能够展示你对框架的整体理解,同时也能帮助面试官评估你的应用设计能力。
二、常见的 Spring MVC 面试题和解答1. 什么是 Spring MVC?Spring MVC 是一个基于 MVC 设计模式的 Web 应用程序开发框架,用于构建可扩展、可维护的 Java Web 应用程序。
Spring考试试题1)下面关于Spring的说话正确的是(B C)(选择两项)A)Spring是一个重量级的框架B)Spring是一个轻量级的框架C)Spring是一个IOC和AOP容器D)Spring是一个入侵式的框架2)下面关于IOC的理解,正确的是(A B)(选择两项)A)控制反转B)对象被动的接受依赖类C)对象主动的去找依赖类D)一定要用接口3)下面关于AOP的理解,正确的是(B C)(选择两项)A)面向纵向的开发B)面向横向的开发C)AOP关注是面D)AOP关注的是点4)Spring的组成一共有(D)块组成。
A)1 B)3 C)5 D)75)Spring各模块之间关系(B C)(选择两项)A)Spring各模块之间是紧密联系的,相互依赖的B)Spring各模块之间可以单独存在C)Spring的核心模块是必须的,其他模块是基于核心模块D)Spring的核心模块不是必须的,可以不要6)Spring核心模块的作用(B)A)做AOP的B)做IOC的,用来管理Bean的C)是用来支持HiberneteD)是用来支持Struts的7)对Hibernate的支持主要用到Spring的那个模块(B)(选择两项)A)Spring核心模块B)Spring ORM模块C)Spring MVC模块D)Spring Web模块8)对Struts的支持主要用到Spring的那个模块(D)(选择两项)A)Spring核心模块B)Spring ORM模块C)Spring MVC模块D)Spring Web模块9)Spring的通知类型有(A B C D)(多项选择)A)Before通知B)After return通知C)Throws通知D)Around通知10)下面关于切入点的说法正确的是(A C D)(多项选择)A)是AOP中一系列连连接点的集合B)在做AOP时定义切入点是必须的C)在做AOP时定义切入点不是必须的D)可以用正则表达式来定义切入点11)Spring包装Hibernate之后的Hibernate的DAO应该继承那个类(C)A)HibernateDAOB)SessionFactoryC)HibernateDAOSuportD)Session12)下面对Spring包装Struts1.2的说法正确的是(B C)(选择两项)A)Spring包装Struts的ActionServletB)Spring包装Struts的ActionC)主要是利用Spring的依赖注入D)主要利用Spring的面向方面的编程13)Spring包装Struts时那些Spring模块是必须的(A D)(选择两项)A)Spring核心模块B)Spring AOP模块C)Spring MVC模块D)Spring WEB模块14)Spring中Before通知的目标对象要实现的接口是(A)A)MethodBeforeAdviceB)ThrowsAdviceC)AfterReturningAdviceD)MethodInterceptor15)Spring中around通知的目标对象要实现的接口是(D)A)MethodBeforeAdviceB)ThrowsAdviceC)AfterReturningAdviceD)MethodInterceptor16)Spring中Before通知的目标对象要实现的接口中before方法中的三个常用的参数依次是(A)A)方法,方法的参数,目标对象B)方法的参数,方法,目标对象C)目标对象,方法,方法的参数D)方法的参数,目标对象,方法17)Spring中around通知的目标对象要实现的接口中invoke中方法的参数是(C)A)方法B)目标对象C)方法执行参数D)Exception18)下面是Spring依赖注入方式的是(A B )(选择两项)A)set方法注入B)构造方法的注入C)get方法的注入D)接口的注入19)下面关于在Spring中配置Bean的id属性的说法正确的是(B D)(选择两项)A)id属性是必须,没有id属性就会报错B)id属性不是必须的,可以没有C)id属性的值可以重复D)id属性的值不可以重复20)下面关于在Spring中配置Bean的name属性的说法正确的是(B D)(选择两项)A)name属性是必须,没有name属性就会报错B)name属性不是必须的,可以没有C)name属性的值可以重复D)name属性的值不可以重复21)下面是IOC自动装载方法的是(A B)(选择两项)A)byNameB)byTypeC)constructorD)byMethod22)下面关于在Spring中配置Bean的init-method的说法正确的是(C)A)init-method是在最前面执行的B)init-method在构造方法后,依赖注入前执行C)init-method在依赖注入之后执行D)init-method在依赖注入之后,构造函数之前执行23)下面关于Spring配置文件说话正确的是(B C)(选择两项)A)Spring配置文件必须叫applicationContext.xmlB)Spring配置文件可以不叫applicationContext.xmlC)Spring配置文件可以有多个D)Spring配置文件只能有一个24)看下面的代码,说法正确的是(B)<bean id="userTable" class="erTable"><property name="userName"><value>ACCP</value></property></bean>A)其中<property name="userName">的userName是UserTable中的属性,可以不要get、set方法。
Spring⾯试题(超详细,2021收集,答案简短好背)1.restcontroller 和controller有什么区别?答:restcontroller=controller+@resposebody2.controller是单例的吗?答:默认是的。
scope可设置成多例,作⽤域:singleton(单例)、prototype(多例)3.过滤器拦截器有什么区别?答:过滤器依赖servlet容器,基于函数回调实现,在容器初始化时调⽤⼀次,⼏乎可以过滤所有资源包括静态⽂件。
拦截器基于web框架⽐如springmvc,基于反射实现运⽤aop,可以多次调⽤,但只能拦截controller,⽆法拦截静态⽂件。
4.spring bean的⽣命周期?答:加载bean定义、bean⼯⼚处理器、实例化、属性赋值、aware接⼝扩展、beanpost前置处理器、初始化、beanpost后置处理器-bean的使⽤销毁5.spring bean的初始化怎么做?答:1.配置init-method @Bean(init-method="xx") 2.实现InitializingBean⽅法afterPropertiesSet,3。
加@PostConstruct 顺序:postConstruct>afterPropertiesSet>init-method6.简单说下IOC和AOP?答:ioc就是权限控制反转,创建对象交给spring容器来做,便于管理。
aop就是⾯向切⾯编程,它通过动态代理为spring对象增加功能。
⽐如增加⽇志切⾯,spirng的事务以及拦截器都是运⽤了aop。
7.spring的动态代理⽤哪种实现?答:spring默认是采⽤jdk的动态代理,如果想要⽤cglib可以通过配置⽂件的⽅式指定。
8.jdk代理和cglib代理有什么区别?答:jdk代理利⽤反射对实现接⼝的类⽣成代理,⽽cglib则利⽤字节码技术⽣成⼀个⼦类。
JavaSpringSecurity常见面试题目Java Spring Security常见面试题目1. 什么是Spring Security?Spring Security是一个功能强大且高度可定制的认证和授权框架,用于保护Java应用程序的安全性。
它提供了一套全面的安全性功能,包括身份验证、授权、密码管理、会话管理等,以确保应用程序的数据和资源得到适当的保护。
2. Spring Security的主要特点有哪些?- 身份验证和授权:Spring Security提供了多种身份验证方式,如基于用户名密码的表单验证、基于OpenID的身份验证等,并支持基于角色或权限的访问控制。
- 集成简化:Spring Security能够与Spring框架无缝集成,通过简单的配置即可启用安全性功能。
- 定制化:Spring Security提供了丰富的扩展点和配置选项,可以根据应用程序的需求进行灵活的定制。
- 高度模块化:Spring Security的架构设计具有高度模块化的特点,不同的功能模块可以根据需求进行选用和定制。
- 支持多种应用场景:Spring Security适用于各种应用场景,包括Web应用、RESTful服务、方法级安全等。
3. Spring Security是如何进行身份验证的?Spring Security提供了多种身份验证方式,常见的一种是基于表单的身份验证。
在这种情况下,用户通过输入用户名和密码提交表单进行身份验证,Spring Security会将提交的用户名和密码与事先配置的用户存储库(如数据库)进行比对。
如果用户名和密码匹配,则认为身份验证成功,并生成相应的认证令牌。
4. Spring Security如何进行授权?Spring Security支持基于角色和基于权限的访问控制。
在配置中,可以指定某个URL或某个方法只能被具有特定角色或权限的用户访问。
在运行时,Spring Security会根据当前用户的角色和权限,判断其是否具有访问相应资源的权限。
1.Spring框架的优点都有什么?Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高依赖注入和IoC 使得JDBC操作简单化Spring是开源的免费的Spring使得对象管理集中化合简单化2.描述一下Spring中实现DI(Dependency Injection)的几种方式方式一:接口注入,在实际中得到了普遍应用,即使在IOC的概念尚未确立时,这样的方法也已经频繁出现在我们的代码中。
方式二:Type2 IoC: Setter injection对象创建之后,将被依赖对象通过set方法设置进去方式三:Type3 IoC: Constructor injection对象创建时,被依赖对象以构造方法参数的方式注入Spring的方式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的事务管理6.如何在Spring的applicationContext.xml里面使用JNDI而不是datasource?可以使用”org.springframework.jndi.JndiObjectFactoryBean”来实现。
示例如下:<bean id=”dataSource”><property name=”jndiName”><value>java:comp/env/jdbc/appfuse</value></property></bean>7.Spring里面如何配置数据库驱动?org.springframework.jdbc.datasource.DriverManagerDataSource”数据源来配置数据库驱动。
示例如下:<bean id=”dataSource”><property name=”driverClassName”><value>org.hsqldb.jdbcDriver</value></property><property name=”url”><value>jdbc:hsqldb:db/appfuse</value></property><property name=”username”><value>sa</value></property><property name=”password”><value></value></property></bean>8.Spring里面applicationContext.xml文件能不能改成其他文件名?ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。
缺省情况下,它会在WEB-INF/applicationContext.xml文件找Spring的配置。
你可以通过定义一个<context-param>元素名字为”contextConfigLocation”来改变Spring配置文件的位置。
示例如下:<listener><listener-class>org.springframework.web.context.ContextLoaderListener <context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/xyz.xml</param-value></context-param></listener-class></listener>9.如何在web应用里面配置spring?<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>10.解释一下Dependency injection(DI,依赖注入)和IOC(Inversion of control,控制反转)?参考答案:依赖注入DI是一个程序设计模式和架构模型,一些时候也称作控制反转,尽管在技术上来讲,依赖注入是一个IOC的特殊实现,依赖注入是指一个对象应用另外一个对象来提供一个特殊的能力,例如:把一个数据库连接已参数的形式传到一个对象的结构方法里面而不是在那个对象内部自行创建一个连接。
控制反转和依赖注入的基本思想就是把类的依赖从类内部转化到外部以减少依赖应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。
也可以说,依赖被注入到对象中。
所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。
11.spring中的BeanFactory与ApplicationContext的作用和区别?作用:1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。
2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:a. 国际化支持b. 资源访问:Resource rs = ctx. getResource(”classpath:config.properties”), “file:c:/config.properties”c. 事件传递:通过实现ApplicationContextAware接口3. 常用的获取ApplicationContext的方法:FileSystemXmlApplicationContext:从文件系统或者url指定的xml配置文件创建,参数为配置文件名或文件名数组ClassPathXmlApplicationContext:从classpath的xml配置文件创建,可以从jar包中读取配置文件WebApplicationContextUtils:从web应用的根目录读取配置文件,需要先在web.xml中配置,可以配置监听器或者servlet来实现<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><servlet><servlet-name>context</servlet-name><servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet>这两种方式都默认配置文件为web-inf/applicationContext.xml,也可使用context-param指定配置文件<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/myApplicationContext.xml</param-value></context-param>12.如何在web环境中配置applicationContext.xml文件?<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>或:<servlet><servlet-name>context</servlet-name><servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>通过如下方法取出applicationContext实例:ApplicationContextac=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext);13.如何配置spring+struts?在struts-config.xml加入一个插件,通过它加载applicationContext.xml在struts-config.xml修改action-mapping标记,具体action交给了DelegateActionProxy 通过DelegateActionProxy进入一spring的环境。