java面试题小记

(一).spring的工作原理

内部最核心的就是ioc了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是java中的反射,反射其实就是在运行时动态的去创建、调用对象,spring在运行时,跟xml spring的配置文件来动态创建对象,和调用对象里的方法的,还有一个核心就是aop,这个就是面向切面编程,可以为某一类对象进行监督和控制(也就是在调用这类对象的具体方法前后去调用你指定的模块),从而达到对一个模块的扩充功能。这些都是通过配置类达到的。

spring的目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(spring根据内这些配置  内部通过反射去动态的组装对象)要记住:spring是一个容器,凡是在容器里的对象才会有spring所提供的这些服务和功能。

(二).谈谈你对aop的理解

利用横切技术,解剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为‘Adpect’,即方面,所谓方面,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑和责任封装起来,便于减少系统的重复代码,降低模块的耦合度,并有利于未来的可操作性和可维护性。Aop代表的是一个横向的关系,如果说对象是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向切面的编程的方法,就仿佛一把利刃,将这些空心圆柱体切开,以获得其内部的消息。而剖开的切面,也就是所谓的方面技术了,然后它又以巧妙的技术将这些剖开的切面复原,不留痕迹。

 使用切面技术,aop将软件系统分为两个部分,核心关注点和横切关注点。业务处理的核心流程是核心关注点,与之关系不大的是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证,日志,事务处理。aop的作用在于分离系统中的各个关注点,将核心关注点和横切关注点分离开来。

实现aop技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行,二是采用静态植入的方式,引入特定的语法创建切面,从而使得编译器可以在编译期间植入有关切面的代码。

(三).谈谈你对 Spring 的理解

1.Spring 实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类 名 为 BeanFactory ( 实 际 上 是 一 个 接 口 ), 在 程 序 中 通 常 BeanFactory 的 子 类 ApplicationContext。Spring 相当于一个大的工厂类,在其配置文件中通过元素配 置用于创建实例对象的类名和实例对象的属性。

2. Spring 提供了对 IOC 良好支持,IOC 是一种编程思想,是一种架构艺术,利用这种 思想可以很好地实现模块之间的解耦。IOC 也称为 DI(Depency Injection)。

3. Spring 提供了对 AOP 技术的良好封装, AOP 称为面向切面编程,就是系统中有很多 各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,例如,加入日志,加 入权限判断,加入异常处理,这种应用称为 AOP。实现 AOP 功能采用的是代理技术,客户端 程序不再调用目标,而调用代理类,代理类与目标类对外具有相同的方法声明,有两种方式 可以实现相同的方法声明,一是实现相同的接口,二是作为目标的子类在,JDK 中采用 Proxy 类产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则可以用 CGLI B。 在生成的代理类的方法中加入系统功能和调用目标类的相应方法,系统功能的代理以 Advice 对象进行提供,显然要创建出代理对象,至少需要目标类和 Advice 类。

(四).Spring 的依赖注入是什么意思?给一个Bean的 message 属性,字符串类型, 注入 值为"Hello"的 XML 配置文件该怎么写?

依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含 义是:当某一个 Java 类,需要另一个 Java 类的协助时,在传统的程序设计过程中,通常由 当前类(调用者)来创建被调用者的实例,然后使用被调用者的方法。但在 Spring 里,创 建被调用者的工作不再由调用者来完成,而是由其它类(往往是工厂类)或容器(Spring IOC

容器)完成,当前调用者从其它类或容器中来获取被调用者的实例,这种方式称为控制反转; 创建被调用者实例的工作通常由 Spring 容器来完成,然后注入调用者,因此也称为依赖注 入,这是 Spring 的一种编程思想的体现。

依赖注入在设计模式也体现得非常多,比如说工厂模式和构建模式,这种就是一个依赖 注入的实现

<bean id="helloBean" class="com.spring.demo.HelloWorld">

      <property name="msg" value="Hello!"/>

</bean>

(五)Spring 有哪几种注入方式?

3 种方法。构造属入、属性注入、接口注入

(六)Spring MVC 工作机制及为什么要用?

1、客户端所有的请求都提交给 DispatcherServlet,它会委托应用系统的其他模块负责 负责对请求进行真正的处理工作。

2.DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller. 

3.DispatcherServlet 请请求提交到目标 Controller

4.Controller 进行业务逻辑处理后,会返回一个 ModelAndView

5. Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指 定的视图对象

6.视图对象负责渲染返回给客户端。

猜你喜欢

转载自blog.csdn.net/weixin_34357962/article/details/87631878
今日推荐