SSM框架面试题

  1.  Spring在SSM起什么作用
    Spring是一个轻量级框架,也是一个容器,Spring实质上讲就是一个Bean工厂,主要用来管理Bean的生命周期和框架集成。有IOC控制反转,DI依赖注入,控制反转是把dao依赖注入到service层,然后service层反转给action层,Spring的顶层容器BeanFactory,常用的ApplicationContext为它的子接口,实现了工厂模式,Spring还提供了AOP的支持,方便在切面级开发,
    (2) 怎么样理解IOC和DI
    在使用Spring框架的过程中、一定会用到控制反转、但是往往所需要的资源还需要其他资源的支持、个过程就需要依赖注入的支持
    (3)Spring的事务,事务的作用。
    • 编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
    • 声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
    (3) Spring的IOC你在项目中是怎么使用的?
    • IOC主要来解决对象之间的依赖问题,把所有的bean的依赖关系通过配置文件或者注解关联起来,降低了耦合度
    (5)Spring的配置文件有哪些内容?
    • 开启事务注解驱动
    • 事务管理器
    • 开启注解功能,并配置扫描包
    • 配置数据源
    • 配置SQL会话工厂、别名、映射文件
    • 不用编写DAO层的实现类(代理模式)
    (6)说下Spring的注解
    • @Controller
    • @Service
    • @Component
    • @RequestMapping
    • @Resource、@Autowired
    • @ResponseBody
    • @Transactional


    (7)为什么要用Spring
    • 降低对象耦合度,让代码更加清晰,提供一些常见的模版
    (8)Spring DI的几种方式
    • (1)构造器注入:通过构造方法初始化
    • <constructor-arg name="dao"</constructor-arg>
    • (2)setter注入:通过setter方法初始化注入
    • <property name="dao" ref="dao2"></property>
    • 注意:在实际开发中常用setter注入。
    (1)SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决
    是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段
    (2)SpingMvc中的控制器的注解
    @Controller 注解:该注解表明该类扮演控制器的角色,Spring不需要你继承任何其他控制器基类或引用Servlet API。
    (3)@RequestMapping注解用在类上面有什么作用
    该注解是用来映射一个URL到一个类或一个特定的处理方法上。
    (4) 我想在拦截的方法里面得到从前台传入的参数,怎么得到
    直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样
    (5)如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象
    直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面
    (6)SpringMvc中函数的返回值是什么
    返回值可以有很多类型,有String, ModelAndView,List,Set等,一般用String比较好,如果是AJAX请求,返回的可以是一个集合
    (7)SpringMvc怎么处理返回值的
    SpringMvc根据配置文件中InternalResourceViewResolver(内部资源视图解析器)的前缀和后缀,用前缀+返回值+后缀组成完整的返回值
    (8)SpringMVC怎么样设定重定向和转发的
    在返回值前面加"forward:"就可以让结果转发,譬如"forward:user.do?name=method4" 在返回值前面加"redirect:"就可以让返回值重定向,譬如"redirect:http://www.uu456.com"
    (9)SpringMvc中有个类把视图和数据都合并的一起的,叫什么
    ModelAndView
    (10)怎么样把数据放入Session里面
    可以声明一个request,或者session先拿到session,然后就可以放入数据,或者可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key
    (11)SpringMvc怎么和AJAX相互调用的
    通过Jackson框架就可以把Java里面的对象直接转化成js可以识别的Json对象 具体步骤如下 :
    1.加入Jackson.jar
    2.在配置文件中配置json的映射
    3.在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解
    (12)当一个方法向AJAX返回对象,譬如Object,List等,需要做什么处理
    要加上@ResponseBody注解
    (13)讲下SpringMvc的执行流程
    系统启动的时候根据配置文件创建spring的容器, 首先是发送http请求到核心控制器DispatcherServlet,spring容器通过映射器去寻找业务控制器,
    使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会涉及到类型转换,执行完业务类后使用ModelAndView进行视图转发,
    数据放在model中,用map传递数据进行页面显示。
    (1)什么是MyBatis的接口绑定,有什么好处
    接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置.
    (2)什么情况下用注解绑定,什么情况下用xml绑定
    当Sql语句比较简单时候,用注解绑定,当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多
    (3)如果要查询的表名和返回的实体Bean对象不一致,那你是怎么处理的?
    在MyBatis里面最主要最灵活的的一个映射对象的ResultMap,在它里面可以映射键值对, 默认里面有id节点,result节点,它可以映射表里面的列名和对象里面的字段名. 并且在一对一,一对多的情况下结果集也一定要用ResultMap
    (4)MyBatis在核心处理类叫什么
    MyBatis里面的核心处理类叫做SqlSession
    (5)讲下MyBatis的缓存
    MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,
    默认是打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置<cache/>
    (6)MyBatis(IBatis)的好处是什么
    ibatis把sql语句从Java源程序中独立出来,放在单独的XML文件中编写,给程序的维护带来了很大便利。
    ibatis封装了底层JDBC API的调用细节,并能自动将结果集转换成JavaBean对象,大大简化了Java数据库编程的重复工作。
    因为Ibatis需要程序员自己去编写sql语句,程序员可以结合数据库自身的特点灵活控制sql语句,因此能够实现比hibernate等全自动orm框架更高的查询效率,能够完成复杂查询。
    (7)MyBatis怎么配置一对多?
    一对多的关系 :property: 指的是集合属性的值, ofType:指的是集合中元素的类型
    (8)MyBatis怎样配置多对一?
    多对一的关系:property: 指的是属性的值, javaType:指的是属性的类型

 


5) SSM优缺点、使用场景?

1. Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句

,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。

2. Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因

为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是mybatis无法做到

数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。

3. Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需

求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的

学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及

怎样用好Hibernate需要具有很强的经验和能力才行。
4. 总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架

构都是好架构,所以框架只有适合才是最好。

Mybatis
1) 简单介绍下你对mybatis的理解?
1. mybatis配置
2. SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
3. mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要

在SqlMapConfig.xml中加载。
4. 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
5. 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
6. mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,

一个是基本执行器、一个是缓存执行器。
7. Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息

及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,

sql的id即是Mapped statement的id。
8. Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、

pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,

输入参数映射就是jdbc编程中对preparedStatement设置参数。
9. Mapped Statement对sql执行输出结果进行定义,包括HashMap、

基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至j

ava对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

 

 

 

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐