javaEE企业级开发理论题库(一)

1.

请简述什么是 Spring 的 IoC 和 DI?

答案:

  IoC 的全称是 Inversion of Control,中文名称为控制反转----->控制反转就是指在使用 Spring 框架之后,对象的实例不再由调 用者来创建,而是由 Spring 容器来创建,Spring 容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这 样,控制权由应用代码转移到了 Spring 容器,控制权发生了反转。

  DI 的全称是 Dependency Injection,中文称之为依赖注入。它与控制反转(IoC)的含义相同,只不过这两个称呼是从两 个角度描述的同一个概念。从 Spring 容器的角度来看,Spring 容器负责将被依赖对象赋值给调用者的成员变量,这相当于为 调用者注入了它依赖的实例,这就是 Spring 的依赖注入。

 

2.

请简述 Bean 的生命周期。

答案:

Bean 的生命周期的整个执行过程描述如下:

  (1)根据配置情况调用 Bean 构造方法或工厂方法实例化 Bean。

  (2)利用依赖注入来完成 Bean 中所有属性值的配置注入Spring 中的 Bean  

  (3)如果 Bean 实现了 BeanNameAware 接口,则 Spring 调用 Bean 的 setBeanName()方法传入当前 Bean 的 id 值。

  (4)如果 Bean 实现了 BeanFactoryAware 接口,则 Spring 调用 setBeanFactory()方法传入当前工厂实例的引用。

  ( 5 )如果 Bean 实现了 ApplicationContextAware 接 口 , 则 Spring 调 用 setApplicationContext() 方 法 传 入 当 前 ApplicationContext 实例的引用。

  (6)如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的预初始化方法 postProcessBeforeInitialzation()对 Bean 进行加工操作,这个非常重要,Spring 的 AOP 就是用它实现的。

  (7)如果 Bean 实现了 InitializingBean 接口,则 Spring 将调用 afterPropertiesSet()方法               (8)如果在配置文件中通过 init-method 属性指定了初始化方法,则调用该初始化方法。        

  (9)如果有 BeanPsostProcessor 和 Bean 关联,则 Spring 将调用该接口的初始化方法 postProcessAfterInitialization()。此 时,Bean 已经可以被应用系统使用了。

  (10)如果在<bean> 中指定了该 Bean 的作用范围为 scope="singleton",则将该 Bean 放入 Spring IoC 的缓存池中,将触 发 Spring 对该 Bean 的生命周期管理;如果在<bean>中指定了该 Bean 的作用范围为 scope="prototype",则将该 Bean 交给调用 者,调用者管理该 Bean 的生命周期,Spring 不再管理该 Bean。

  (11)如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory()方法将 Spring 中的 Bean 销毁;如果在配置文件 中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法进行销毁。

 

3.

请列举你所知道的 Spring 的通知类型并解释。

答案:

Spring 中的通知按照在目标类方法的连接点位置,可以分为以下 5 种类型:

  (1)org.aopalliance.intercept.MethodInterceptor(环绕通知) 在目标方法执行前后实施增强,可以应用于日志、事务管理等功能。

  (2)org.springframework.aop.MethodBeforeAdvice(前置通知) 在目标方法执行前实施增强,可以应用于权限管理等功能。

  (3)org.springframework.aop.AfterReturningAdvice(后置通知) 在目标方法执行后实施增强,可以应用于关闭流、上传文件、删除临时文件等功能。

  (4)org.springframework.aop.ThrowsAdvice(异常通知) 在方法抛出异常后实施增强,可以应用于处理异常记录日志等功能。

  (5)org.springframework.aop.IntroductionInterceptor(引介通知) 在目标类中添加一些新的方法和属性,可以应用于修改老版本程序(增强类)

 

4.

简述 Spring MVC 的请求处理流程。

答案:

  (1)首先用户发送请求到前端控制器(DispatcherServlet),前端控制器根据请求信息(比如:URL)来决定选择哪个页 面控制器(Controller)来进行处理,并把请求委托给它,即:Serlvet 控制器的控制逻辑部分

  (2)页面控制器接收到请求后,进行业务处理,处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名)

  (3)前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的真正视图,并把模型数据传入以便视图渲染展示

  (4)前端控制器再次收回控制权,将结果响应返回给用户,至此整个流程结束 

 

5.

请简述简单数据类型中的@RequestParam 注解及其属性作用。

答案:

@RequestParam 注解主要用于对请求中的参数进行定义,多用于在请求参数名与方法形参名不一致时的参数间接绑定。 在使用时可以指定他的 4 个属性,具体如下:

  (1)value:name 属性的别名,这里指参数的名字,即入参的请求参数名字,如果只使用 vaule 属性,则可以省略 value 属性名。

  (2)name:用于指定请求头绑定的名称。

 

6.

请简述 MapperFactoryBean 和 MapperScannerConfigurer 的作用。

答案:

  MapperFactoryBean 是 MyBatis-Spring 团队提供的一个用于根据 Mapper 接口生成 Mapper 对象的类,通过 MapperFactoryBean 可以配置接口文件以及注入 SqlSessionfactory,从而完成一个 Bean 的实例化。

  MapperScannerConfigurer 是 MyBatis-Spring 团队提供的一种用于以自动扫描形式来配置 MyBatis 中映射器的类,可以通过配置包路径来自动扫描包接口 生成映射器,这使得开发人员可以在编写很少代码的情况下,完成对映射器的配置,从而提高开发效率。

上一篇:研发4面真题解析(Java岗):javaee教程文档


下一篇:基于javaEE的简单教务系统实现(六)