SSM(2)面试题

16. BeanFactory 接口和 ApplicationContext 接口有什么区别 ?
答案:
1. ApplicationContext 接口继承BeanFactory接口,Spring核心工厂是BeanFactory ,BeanFactory采取延迟加载,第一次getBean时才会初始化Bean, ApplicationContext是会在加载配置文件时初始化Bean。
2. ApplicationContext是对BeanFactory扩展,它可以进行国际化处理、事件传递和bean自动装配以及各种不同应用层的Context实现
3. 开发中基本都在使用ApplicationContext, web项目使用WebApplicationContext ,很少用到BeanFactory
17. Spring里面applicationContext.xml文件能不能改成其他文件名?
答案:
1. ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。
2. 缺省情况下, 它会在WEB-INF/applicationContext.xml文件找Spring的配置。
3. 你可以通过定义一个元素名字为”contextConfigLocation”来改变Spring配置文件的位置。
18. SpringMVC如何解决线程安全性问题?
答案: 1. SpringMVC中的Controller默认是单例的,因此有可能有多个请求访问同一个Controller实例,从而有可能产生线程安全问题。 2. 因此尽量避免在Controller中使用实例变量 3. 使用ThreadLocal变量。
19. 什么是事务传播?
答案:
1. 事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。
20. 介绍一下Spring的事务管理
答案:
1. 事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。
2. 开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。
3. spring提供了几个关于事务处理的类:
1. TransactionDefinition //事务属性定义
2. TranscationStatus //代表了当前的事务,可以提交,回滚。
3. PlatformTransactionManager这个是spring提供的用于管理事务的基础接口。
21. 解释一下Spring AOP里面的几个名词
答案:
1. 切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以 @Aspect 注解(@AspectJ风格)来实现。
2. 连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。 在Spring AOP中,一个连接点 总是 代表一个方法的执行。 通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。
3. 通知(Advice):在切面的某个特定的连接点(Joinpoint)上执行的动作。通知有各种类型,其中包括“around”、“before”和“after”等通知。 通知的类型将在后面部分进行讨论。许多AOP框架,包括Spring,都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。
4. 切入点(Pointcut):匹配连接点(Joinpoint)的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。 切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。
5. 引入(Introduction):(也被称为内部类型声明(inter-type declaration))。声明额外的方法或者某个类型的字段。 Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。例如,你可以使用一个引入来使bean实现 IsModified 接口,以便简化缓存机制。
6. 目标对象(Target Object): 被一个或者多个切面(aspect)所通知(advise)的对象。也有人把它叫做 被通知(advised) 对象。 既然Spring AOP是通过运行时代理实现的,这个对象永远是一个 被代理(proxied) 对象。
7. AOP代理(AOP Proxy): AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。 注意:Spring 2.0最新引入的基于模式(schema-based)风格和@AspectJ注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。
8. 织入(Weaving):把切面(aspect)连接到其它的应用程序类型或者对象上,并创建一个被通知(advised)的对象。 这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。 Spring和其他纯Java AOP框架一样,在运行时完成织入。
22. SpringMVC如何实现文件上载步骤?
1. RFC1867 规定了HTTP文件上载协议
2. 客户端
o form标签中使用属性 ENCTYPE="multipart/form-data" METHOD=POST
o 使用 input type=file 标签选择文件
3. 服务器端
o 导入commons-fileupload 组件
o 配置文件上载处理器
o 在控制器方法声明MultipartFile 类型变量接收上载文件。
23. SpringMVC如何实现Excel文件下载?
1. 利用 Apache POI API生成Excel
2. 在控制器中设置 ContentType 为Excel文件类型
3. 在控制器中设置 Content-Disposition 设定下载文件名

你可能感兴趣的:(Java,面试题)