Ssm常见面试问题
1.什么是Spring框架?Spring Framework的主要模块有哪些?
Spring框架是一个Java平台,为Java应用的开发提供了全面而广泛的基础支持。
Spring帮助开发者解决开发中的基本问题,让开发者专注于应用开发。
Spring框架本身是按照设计模式精心构建的,这使得我们能够在开发环境中集成Spring框架,而不用担心Spring在后台是如何工作的。
到目前为止,Spring Framework已经集成了20多个模块。这些模块主要分为核心容器、数据访问/集成、Web、AOP(面向方面编程)、工具、消息和测试模块,如下图所示。
2.使用Spring框架有什么好处?
以下是使用Spring框架的一些主要好处:
依赖注入(DI)方法使构造函数和JavaBean属性文件之间的依赖关系一目了然。
与EJB集装箱相比,IoC集装箱往往更轻便。所以IoC容器在有限的内存和CPU资源下开发和发布应用是非常有利的。
春天不会闭门造车。Spring使用了现有的技术,如ORM框架、日志框架、J2EE、Quartz和JDK Timer,以及其他视图技术。
Spring框架是以模块的形式组织的。包和类的模块可以通过它们的编号看出来,开发者只需要选择自己需要的模块。
测试用Spring开发的应用程序非常简单,因为与测试相关的环境代码已经包含在框架中。更简单地说,通过使用JavaBean形式的POJO类,可以方便地使用依赖注入来编写测试数据。
Spring的web框架也是一个设计良好的web MVC框架,在主流框架如Struts、过度设计、冷门的web框架之外,为开发者提供了选择Web框架的强大选择。
Spring提供了一个方便的事务管理接口,适用于小型本地事务处理(比如单DB环境)和复杂的普通事务处理(比如使用JTA的复杂DB环境)。
3.什么是控制反转(IOC)?什么是依赖注入?
控制反转是应用于软件工程领域的一种编程技巧,在运行时受汇编对象的约束。对象之间的耦合关系在编译时通常是未知的。在传统的编程模式中,业务逻辑的流程是由应用程序中已经设置了关联关系的对象决定的。在使用控制反转的情况下,业务逻辑的流程由对象关系图决定,对象关系图由汇编器实例化。这个实现还可以抽象出对象之间关联的定义。而绑定过程是通过“依赖注入”来实现的。
控制反转是一种旨在给应用程序中的目标组件更多控制的设计范式,在我们的实际工作中发挥了有效的作用。
依赖注入是一种实例化函数对象的模式,当编译阶段不知道所需函数来自的类时,其他对象依赖于该函数对象。这就需要一个机制来激活相应的组件来提供特定的功能,所以依赖注入是控制反转的基础。否则,如果组件不受框架控制,框架怎么知道要创建哪个组件?
仍然有三种实现被注入到Java中:
构造函数注入
Setter方法注入
界面注射
4.请在Spring框架中解释一下IoC。
Org。Springframework.beans包和org。spring中的Springframework.context包构成了spring框架的IoC容器的基础。
BeanFactory接口提供了一种高级配置机制,这使得配置任何类型的对象成为可能。ApplicationContex接口扩展了BeanFactory(它是一个子接口),在BeanFactory的基础上增加了其他功能,比如更容易与Spring的AOP集成,还提供了一个处理消息资源(用于国际化)、事件传播和应用层特殊配置的机制,比如web应用的Webapplicationcontext。
org . Spring framework . bean . factory . bean factory是Spring IoC容器的具体实现,用来对上面提到的各种bean进行封装和管理。BeanFactory接口是Spring IoC容器的核心接口。
IOC:对象的创建、初始化、销毁由spring管理,而不是由开发者控制,实现控制反转。
5.BeanFactory和ApplicationContext的区别是什么?
BeanFactory可以理解为包含bean集合的工厂类。BeanFactory包含各种bean的定义,以便在接收客户端请求时实例化相应的bean。
BeanFactory还可以在实例化对象时生成协作类之间的关系。这释放了bean本身和bean客户端的配置。BeanFactory还包括bean生命周期的控制,调用客户端的初始化方法和销毁方法。
从表面上看,应用上下文和bean工厂一样,具有设置bean定义和bean关联的功能,可以根据请求分发bean。然而,在此基础上,applicationcontext还提供了其他功能。
提供支持国际化的文本消息
统一资源文件读取方法
侦听器中注册的bean的事件
以下是应用程序上下文的三种常见实现:
1.从类路径的XML配置文件中读取上下文,并生成上下文定义。应用程序上下文是从程序环境变量中获得的。
application context = new ClassPathxmlapplicationContext(" bean . XML ");
一个
2.filestystemxmlaplicationcontext:从文件系统中的XML配置文件读取上下文。
application context = new filestystemxmlapplicationcontext(" bean . XML ");
一个
XmlWebApplicationContext:从Web应用程序的XML文件中读取上下文。
6.Spring有几种配置模式?
有三种方法可以将Spring配置到应用程序开发中:
基于XML的配置
基于注释的配置
基于Java的配置
7.如何基于XML配置配置Spring?
在Spring框架中,依赖关系和服务需要在特殊的配置文件中实现,这些文件通常采用XML格式。这些配置文件的格式通常从开始,然后由一系列bean定义和特殊的应用程序配置选项组成。
Springxml配置的主要目的是使所有Spring组件能够以xml文件的形式进行配置。这意味着不会有其他Spring配置类型(例如声明模式或基于Java类的配置模式)
Spring的XML配置模式是利用Spring命名空间支持的一系列XML标签实现的。Spring有以下主要名称空间:context、beans、jdbc、tx、aop、mvc和aso。
解释春豆的生命周期?
春豆的生命周期很好理解。初始化bean实例时,它需要执行一系列初始化操作来达到可用状态。同样,当一个bean未被调用时,它需要被析构并从bean容器中移除。
Spring bean工厂负责管理Spring容器中创建的bean的生命周期。Bean的生命周期由两组回调方法组成。
初始化后调用回调方法。
破坏之前调用的回调方法。
Spring框架提供了以下四种方法来管理bean的生命周期事件:
InitializingBean和DisposableBean回调接口
特殊行为的其他感知接口
Bean配置文件中的自定义init()方法和destroy()方法
@PostConstruct和@PreDestroy批注方法
春豆的范围有什么区别?
Spring容器中的Bean可以分为五个范围。所有范围的名称都是不言自明的,但为了避免混淆,让我们解释一下:
Singleton:这个bean作用域是默认的,它保证不管收到多少请求,每个容器中只有一个bean的实例,单实例模式由bean工厂自己维护。
原型:原型范围与单实例范围相反,为每个bean请求提供一个实例。
请求:在请求bean的范围内,将为来自客户端的每个网络请求创建一个实例。请求完成后,bean将失败,并被垃圾收集器回收。
会话:类似于请求范围,确保每个会话中都有一个bean的实例,当会话过期时,bean将变得无效。
全局会话:全局会话与Portlet应用程序相关。当您的应用程序被部署在Portlet容器中工作时,它包含许多Portlet。如果您想声明所有portlet共享一个全局存储变量,那么全局变量需要存储在全局会话中。
全局作用域与Servlet中的会话作用域具有相同的效果。
什么是春天内豆?
在Spring框架中,每当使用一个bean时,只调用一个属性。将这个bean声明为内部bean是明智的。内部bean可以通过在setter中注入“属性”,在构造器中注入“构造参数”来实现。
例如,在我们的应用程序中,客户类指的是人员类。我们需要做的是创建一个人的实例,然后在客户内部使用它。
public class Customer{
private Person person;
//Setters and Getters
}
public class Person{
private String name;
private String address;
private int age;
//Setters and Getters
}
内部bean的声明方式如下:
相关文章
- 03-16哈尔滨黑龙江上海深圳厦门