• Spring部分面试题及答案----java


    1.请简单的说一下Spring框架?为什么要用Spring框架?

    Spring是一个轻量级的开源的javaEE框架,可以解决应用开发的复杂性!Spring的两个核心:IOC(控制反转,把创建对象过程交给Spring进行管理)和AOP(面向切面,不修改源代码进行功能增强   如:埋点);

    使用Spring 框架的好处:

      (1)方便解耦,简化开发

      (2)Aop编程支持

      (3)方便程序测试

      (4)方便和其它框架进行整合

      (5)方便进行事务操作

      (6)降低API开发难度

    2.Spring默认使用单例还是多例,是线程安全的还是线程不安全的?

    Spring默认使用单列,线程不安全,可以在spring配置文件的bean标签里面设置属性(scope)用于设置单实例或者多实例(.singleton :单实例    prototype: 多实例)

    3.Spring基于xml注入bean的几种方式

    (1)Set方法注入;

    (2)构造器注入:①通过index设置参数的位置;②通过type设置参数类型;

    (3)静态工厂注入;

    (4)实例工厂;

    4.Spring的有几种事务实现方式?

    编码式事务管理和声明式事务管理!一般我们用声明式事务管理

    声明式事务管理又有两种方式:基于XML配置文件的方式;另一个是在业务方法上进行@Transactional注解,将事务规则应用到业务逻辑中。

    事务的4个特性:

      (1)原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做,要么全部做。

      (2)一致性:数据不会因为事务的执行而遭到破坏。

      (3)隔离性:一个事务的执行,不受其他事务(进程)的干扰。既并发执行的个事务之间互不干扰。

      (4)持久性:一个事务一旦提交,它对数据库的改变将是永久的。

    5.Spring提供IOS容器两种实现方式:(两种接口)

    BeanFactory:IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员进行使用;
        ***加载配置文件的时候不会去创建对象,在获取对象(使用)才会去创建对象;
    ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用;
        ***加载配置文件的时候就会把配置文件对象进行创建
    ApplicationContext接口的两个实现类:

    (1)FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。

    (2)ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。

    6.SpringMVC的工作流程(可以背下来)

    (1)用户发送请求给前端控制器(DispatcherServlet),前端控制器(DispatcherServlet)收到请求后调用处理器映射器(HandlerMapping);

    (2)处理器映射器找到具体的处理器处理完成后,并返回给前端控制器(DispatcherServlet),前端控制器调用处理器适配器(HandlerAdapter),返回一个虚拟视图(ModelAndView)给前端控制器(DispatcherServlet);

    (3)前端控制器(DispatcherServlet)将虚拟视图(ModelAndView)传给视图解析器(ViewReslover),通过解析以后返回真正的视图给用户

    7.SpringMVC为什么会被称为三层架构体系?

     MVC即Model-View-Controller,将应用按照Model(模型)、View(视图)、Controller(控制)这样的方式分离。

    8.SpringMVC的优点

    (1)天生与Spring框架集成(如IoC容器、AOP等)

    (2)提供强大的约定大于配置的契约式编程支持

    (3)进行更简洁的Web层的开发

    (4)支持Restful风格

    9.SpringMVC 和 Struts2的区别

     SpringMVC是方法级别上的拦截,Struts2是类级别上的拦截

     Springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器

      

    Best Regards!
    Make a little progress every day!
  • 相关阅读:
    DJANGO-天天生鲜项目从0到1-011-订单-订单提交和创建
    DJANGO-天天生鲜项目从0到1-010-购物车-购物车操作页面(勾选+删改)
    DJANGO-天天生鲜项目从0到1-009-购物车-Ajax实现添加至购物车功能
    DJANGO-天天生鲜项目从0到1-009-搜索功能实现(django-haystack+whoosh+jieba)
    DJANGO-天天生鲜项目从0到1-008-列表页
    lombok 注解
    java 枚举
    Java反射的理解(六)-- 通过反射了解集合泛型的本质
    Java反射理解(五)-- 方法反射的基本操作
    Java反射理解(四)-- 获取成员变量构造函数信息
  • 原文地址:https://www.cnblogs.com/chuan-yoyo/p/13438458.html
Copyright © 2020-2023  润新知