您的位置:首页 > 编程语言 > Java开发

spring 面试题

2016-03-10 18:51 274 查看
spring问题

1 什么 spring 包含哪些模块  有哪些优点
2 beanfactory和appalicationContext区别
ApplicationContext提供了一种解决文档信息的方法,一种加载文件资源的方式(如图片),
他们可以向监听他们的beans发送消息。另外,容器或者容器中beans的操作,这些必须以
bean工厂的编程方式处理的操作可以在应用上下文中以声明的方式处理。应用上下文实现了
MessageSource,该接口用于获取本地消息,实际的实现是可选的。BeanFactory是Spring里面Bean工厂的顶级接口.

Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册
为监听器的bean发布事件。另外,在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,
可以在Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实
现以可插拔的方式提供获取本地化消息的方法。
3 spring包括哪些模块
Core module
Bean module
Context modulep
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 什么是aop (代理 连接点,通知)(spring aop和aspetcj【框架】  动态代理和cglib的区别【技术】)
aop 是面向切面编程,是非侵入式编程,它把应用的业务逻辑与系统的服务分离开来
代理是将通知应用到目标对象后创建的对象
目标对象是被一个或者多个切面所通知的对象
连接点代表应用程序中插入AOP切面的地点
通知表示在方法执行前后需要执行的动作

CGLIB是通过生成java 字节码从而动态的产生代理对象,因此需要字节码解析处理的依赖asm类库,
字节码动态生成的代理对象实际上是
4000
继承了真实主题类的
JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。其中
InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,在并通过反射机制调用目标
类的代码,动态将横切逻辑和业务逻辑编织在一 起。

5 什么是ioc 什么是di

6 依赖注入的几种方式
7 bean的四个作用域(线程安全问题)
singleton 在每个Spring IoC容器中一个bean定义对应一个对象实例。
prototype 一个bean定义对应多个对象实例。
request 在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,
它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext 情形下有效。
session 在一个HTTP Session 中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext 情形下有效。
global session在一个全局的HTTP Session 中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。
该作用域仅在基于web的Spring ApplicationContext 情形下有效。
8 bean的生命周期
9 怎么配置自动装配 常用的注解 自动装配的类型,局限性,如何开启注解装配
10 解释下 required quantifier autowired的区别
11 使用Spring整合Hibernate的步骤?
12 使用spring整合mybatis的步骤
配置数据源datasource
配置jdbcTemplate 引入数据源
配置transaction 事物管理
配置sqlSessionFactionBean
配置MapperScannerConfigurer 扫描映射文件
配置事物切面
13 spring如何配置事物 (切面,切点 通知 ,事物的传播的特性,隔离级别 只读 超时)
14 数据库的acid的属性
原子性(Atomic):
指整个数据库事务是不可分割的工作单元。原子性确保在事务中的所有操作要么都发生,要么都不发生。
一致性(Consistency):
一旦一个事务结束了(不管成功与否),系统所处的状态和它的业务规则是一致的。即数据应当不会被破坏。
隔离性(Isolation):
指多个事务同时操作同一数据时,每个事务都有各自的完整数据空间。
持久性(Durability):
一旦事务完成,事务的结果应该持久化。
15 并发引发的问题 哪种隔离级别解决哪种问题
第一类丢失更新:撤消一个事务时,把其它事务已提交的更新数据也撤消了。
脏读:一个事务读到另一个事务未提交的更新数据。
不可重复读:一个事务读到另一个事务已经提交的更改数据。
第二类丢失更新:一个事务覆盖另一个事务已经提交的更新数据。
幻读:一个事务读到另一个事务已提交的新增或已删除数据。

设置事物隔离级别就能解决相应问题

READ UNCOMMITTED: 读未提交数据。脏读、不可重复读、幻读都可能发生。它的事务隔离性最低。
READ COMMITTED:读已提交数据。解决脏读。
REPEATABLE READ:可重复读。解决了不可重复读,脏读。
SERIALIZABLE:串行化。解决了任何并发事务问题。最严格的事务隔离性。
16 通知分为几种类型
前置通知、
后置通知、
返回通知、
异常通知 、
后置通知、
环绕通知

springmvc的问题
17 springmvc如何配置 和spring配置是否会有冲突(两个配置文件)
在web.xml 中配置 DispatchServlet  配置initparam

<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/dispatcherServlet.xml</param-value>
</init-param>

18 springmvc常用的注解 并解释作用
@requestMapping  可以用于namespace  映射url 路径
@PathVariable     可以获取REST 风格的url 请求上的参数
@RequestParam    可以表单参数填充到指定请求参数
@responseBody    可以返回非 string 的返回值
19 springmvc如何实现文件上传和下载
配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1048576"></property>
</bean>
在请求方法中加入参数 MultipartFile file

文件下载
//需要下载的目标文件
File file=new File("c:/"+fileName);
//设置响应头
HttpHeaders hh=new HttpHeaders();
//设置下载的文件的名称
hh.setContentDispositionFormData("attachment", URLEncoder.encode(fileName, "UTF-8"));
//读取目标文件为二进制数组
byte[] fileByte=FileCopyUtils.copyToByteArray(file);
//构建ResponseEntity对象
ResponseEntity<byte[]> re=new ResponseEntity<byte[]>(fileByte, hh, HttpStatus.CREATED);
20 springmvc如何实现国际化

配置 org.springframework.context.support.ResourceBundleMessageSource
spring配置文件通过名称注入资源文件读取类 必须取名为: messageSource
ResourceBundleMessageSource 用于配置读取资源文件的信息
basename 资源文件的名称

21 springmvc的校验框架
可以使用hibernate 的校验框架
在实体类中需要校验的字段上加入校验规则
@Null     被注释的元素必须为 null
@NotNull     被注释的元素必须不为 null
@AssertTrue     被注释的元素必须为 true
@AssertFalse     被注释的元素必须为 false
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)     被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past     被注释的元素必须是一个过去的日期
@Future     被注释的元素必须是一个将来的日期
在请求方法中加入参数 @Valid 需要验证的实体类 ,BindingResult br
@Valid表示调用User类中的验证规则进行验证
BindingResult 验证是失败的字段的错误信息 放置在该实现类中
被验证的实体类的路径 是实体类的变量名称 +.+属性名
在jsp页面通过  <forms:errors path="user.userName"></forms:errors>方式输出错误信息

22 spring描述 返回字符串 ,modelAndView的区别
23 springmvc方法的参数种类(HttpServletRequest,Cookie,Model,OutStream)
24 springmvc使用ajax的几种方式
首先在请求方法上加入 @responseBody 注解
然后把 对象转换成json 可以使用 jsonArray 和 jsonObject 的format

返回byte []         将 json 字符串 转换成 byte []
返回 outPutStream   将 json 字符串 使用 流 write 出去
返回 List           将对象转换成json字符串  [{},{}]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring