【2023最新Java面试宝典】Spring面试题及答案解析汇总(130题)

44 篇文章 2 订阅
4 篇文章 0 订阅

一般问题

1、不同版本的Spring Framework有哪些主要功能?
2、什么是Spring Framework?
3、列举Spring Framework的优点。
4、Spring Framework有哪些不同的功能?
5、Spring Framework中有多少个模块,它们分别是什么?
6、什么是Spring配置文件?
7、Spring应用程序有哪些不同组件?
8、使用Spring有哪些方式?

依赖注入(Ioc)

1、什么是Spring IOC容器?
2、什么是依赖注入?
3、可以通过多少种方式完成依赖注入?
4、区分构造函数注入和setter注入。
5、spring中有多少种IOC容器?
6、区分BeanFactory和ApplicationContext。
7、列举IoC的一些好处。
8、Spring IoC的实现机制。

Beans

1、什么是spring bean?
2、spring提供了哪些配置方式?
3、spring支持集中bean scope?
4、spring bean容器的生命周期是什么样的?
5、什么是spring的内部bean?
6、什么是spring装配?
7、自动装配有哪些方式?
8、自动装配有什么局限?

注解

1、什么是基于注解的容器配置?
2、如何在spring中启动注解装配?
3、@Component, @Controller, @Repository
4、@Required注解有什么用?
5、@Autowired注解有什么用?
6、@Qualifier注解有什么用?
7、@RequestMapping注解有什么用?@Service有何区别?

数据访问

1、spring DAO有什么用?
2、列举Spring DAO抛出的异常。
3、spring JDBC API中存在哪些类?
4、使用Spring访问Hibernate的方法有哪些?
5、列举spring支持的事务管理类型
6、spring支持哪些ORM框架

AOP

1、什么是AOP
2、什么是Aspect?
3、什么是切点(JoinPoint)
4、什么是通知(Advice)?
5、有哪些类型的通知(Advice)?
6、指出在spring aop中concern和cross-cuttingconcern的不同之处。
7、AOP有哪些实现方式?
8、Spring AOP and AspectJ AOP有什么区别?
9、如何理解Spring中的代理?
10、什么是编织(Weaving)?

MVC

1、Spring MVC框架有什么用?
2、描述一下DispatcherServlet的工作流程
3、介绍一下WebApplicationContext

Spring面试题(二)

1、什么是spring?
2、使用Spring框架的好处是什么?
3、Spring由哪些模块组成?
5、BeanFactory–BeanFactory实现举例。
6、XMLBeanFactory
7、解释AOP模块
8、解释JDBC抽象和DAO模块。
9、解释对象/关系映射集成模块。
10、解释WEB模块。
11、Spring配置文件
13、什么是Spring IOC容器?
14、IOC的优点是什么?
15、ApplicationContext通常的实现是什么?
16、Bean工厂和Application contexts有什么区别?
17、一个Spring的应用看起来像什么?

依赖注入

1、什么是 Spring的依赖注入?
2、有哪些不同类型的IOC(依赖注入)方式?
3、哪种依赖注入方式你建议使用,构造器注入,还是Setter 方法注入?

Spring Beans

1、什么是Spring beans?
2、一个Spring Bean定义包含什么?
3、如何给Spring容器提供配置元数据?
4、你怎样定义类的作用域?
5、解释Spring支持的几种bean的作用域。
6、Spring框架中的单例bean是线程安全的吗?
7、解释Spring框架中bean的生命周期。
8、哪些是重要的bean生命周期方法?你能重载它们吗?
9、什么是Spring的内部bean?
10、在Spring中如何注入一个java集合?
11、什么是bean装配?
12、什么是bean的自动装配?
13、解释不同方式的自动装配。
14、自动装配有哪些局限性 ?
15、你可以在Spring中注入一个null和一个空字符串吗?

Spring注解

1、什么是基于Java的Spring注解配置? 给一些注解的例子
2、什么是基于注解的容器配置?
3、怎样开启注解装配?
4、@Required注解
5、@Autowired注解
6、@Qualifier注解

Spring数据访问

1、在Spring框架中如何更有效地使用JDBC?
2、JdbcTemplate
3、Spring对DAO的支持
4、使用Spring通过什么方式访问Hibernate?
5、Spring支持的ORM
6、如何通过HibernateDaoSupport将Spring和Hibernate结合起来?
7、Spring支持的事务管理类型
8、Spring框架的事务管理有哪些优点?
9、你更倾向用那种事务管理类型?

Spring面向切面编程(AOP)

1、解释AOP
2、Aspect切面
3、在Spring AOP中,关注点和横切关注的区别是什么?
4、连接点
5、通知
6、切点
7、什么是引入?
8、什么是目标对象?
9、什么是代理?
10、有几种不同类型的自动代理?
11、什么是织入?什么是织入应用的不同点?
12、解释基于XML Schema方式的切面实现。
13、解释基于注解的切面实现

Spring的MVC

1、什么是Spring的MVC框架?
2、DispatcherServlet
3、WebApplicationContext
4、什么是Spring MVC框架的控制器?
5、@Controller注解
6、@RequestMapping注解
总结:所有的面试题目都不是一成不变的,面试题目只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。
特意整理出了有分类目录的Java面试题,方便大家平时复习和收藏。希望正在准备面试的朋友们能顺顺利利找到自己心仪的工作!!!

一般问题

1、不同版本的Spring Framework有哪些主要功能?

答:

2、什么是Spring Framework?

答:

Spring是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松散耦合的。它具有分层体系结构,允许用户选择组件,同时还为J2EE应用程序开发提供了一个有凝聚力的框架。它可以集成其他框架,如 Structs、Hibernate、EJB 等,所以又称为框架的框架。

3、列举Spring Framework的优点。

答:

由于Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。Spring Framework支持POJO(Plain Old Java Object) 编程,从而具备持续集成和可测试性。由于依赖注入和控制反转,JDBC得以简化。它是开源免费的。

4、Spring Framework有哪些不同的功能?

答:

轻量级-Spring 在代码量和透明度方面都很轻便。

IOC-控制反转AOP-面向切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。容器-Spring 负责创建和管理对象(Bean)的生命周期和配置。MVC-对web应用提供了高度可配置性,其他框架的集成也十分方便。事务管理 - 提供了用于事务管理的通用抽象层。Spring的事务支持也可用于容器较少的环境。JDBC异常-Spring的JDBC抽象层提供了一个异常层次结构,简化了错误处理策略。

5、Spring Framework中有多少个模块,它们分别是什么?

答:


6、什么是Spring配置文件?

答:

Spring配置文件是XML文件。该文件主要包含类信息。它描述了这些类是如何配置以及相互引入的。但是,XML配置文件冗长且更加干净。如果没有正确规划和编写,那么在大项目中管理变得非常困难。

7、Spring应用程序有哪些不同组件?

答:

Spring应用一般有以下组件:

接口-定义功能。

Bean 类-它包含属性,setter和getter方法,函数等。

Spring面向切面编程(AOP) -提供面向切面编程的功能。

Bean配置文件-包含类的信息以及如何配置它们。

用户程序-它使用接口。

8、使用Spring有哪些方式?

答:

使用Spring有以下方式:

作为一个成熟的Spring Web应用程序。

作为第三方Web框架,使用Spring Frameworks中间层。

用于远程使用。

作为企业级Java Bean,它可以包装现有的POJO(Plain Old Java Objects)。

依赖注入(Ioc)

1、什么是Spring IOC容器?

答:

Spring框架的核心是Spring容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring容器使用依赖注入来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。该元数据可以通过XML,Java注解或Java代码提供。

2、什么是依赖注入?

答:

在依赖注入中,您不必创建对象,但必须描述如何创建它们。您不是直接在代码中将组件和服务连接在一起,而是描述配置文件中哪些组件需要哪些服务。由IoC容器将它们装配在一起。

3、可以通过多少种方式完成依赖注入?

答:

4、区分构造函数注入和setter注入。

答:

5、spring中有多少种IOC容器?

答:

BeanFactory-BeanFactory就像一个包含bean集合的工厂类。它会在客户端要求时实例化bean。

ApplicationContext-ApplicationContext 接口扩展了BeanFactory接口。它在BeanFactory基础上提供了一些额外的功能。
6、区分BeanFactory和ApplicationContext。
答:

7、列举IoC的一些好处。
答:

8、Spring IoC的实现机制。
答:

Spring中的IoC的实现原理就是工厂模式加反射机制。

实例:

interface Fruit {
	public abstract void eat();
}
class Apple implements Fruit {
	public void eat(){
		System.out.println("Apple");
	}
}
class Orange implements Fruit {
	public void eat(){
		System.out.println("Orange");
	}
}
class Factory {
	public static Fruit getInstance(String ClassName) {
		Fruit f=null;
		try {
			f=(Fruit)Class.forName(ClassName).newInstance();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		return f;
	}
}
class Client {
	public static void main(String[] a) {
		Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
		if(f!=null){
			f.eat();
		}
	}
}

Beans

1、什么是spring bean?

答:

2、spring提供了哪些配置方式?

答:

基于xml配置

bean所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常包含许多bean定义和特定于应用程序的配置选项。它们通常以bean标签开头。例如:

<bean id="studentbean" class="org.edureka.firstSpring.StudentBean"> <property name="name" value="Edureka"></property> </bean>

基于注解配置

您可以通过在相关的类,方法或字段声明上使用注解,将bean配置为组件类本身,而不是使用XML来描述bean装配。默认情况下,Spring容器中未打开注解装配。因此,您需要在使用它之前在Spring配置文件中启用它。例如:

<beans> <context:annotation-config/> <!-- bean definitions go here --> </beans>

基于Java API配置

Spring 的 Java配置是通过使用@Bean和@Configuration 来实现。

1、 @Bean注解扮演与元素相同的角色。

2、 @Configuration类允许通过简单地调用同一个类中的其他@Bean方法来定义bean间依赖关系。

例如:

@Configuration public class StudentConfig {
	@Bean public StudentBean myStudent() {
		return new StudentBean();
	}
}
3、spring支持集中bean scope?

答:

Spring bean支持5种scope:

Singleton-每个Spring IoC容器仅有一个单实例。Prototype-每次请求都会产生一个新的实例。Request-每一次HTTP请求都会产生一个新的实例,并且该bean仅在当前 HTTP 请求内有效。Session-每一次 HTTP请求都会产生一个新的 bean,同时该 bean仅在当前HTTP session内有效。Global-session-类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在 globalsession作用域中定义的bean被限定于全局portlet Session的生命周期范围内。

如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。

仅当用户使用支持Web的 ApplicationContext 时,最后三个才可用。

4、spring bean容器的生命周期是什么样的?

答:

spring bean容器的生命周期流程如下:

1、Spring容器根据配置中的bean定义中实例化bean。

2、Spring使用依赖注入填充所有属性,如bean中所定义的配置。

3、如果bean实现BeanNameAware 接口,则工厂通过传递bean的ID来调用setBeanName()。

4、如果bean实现BeanFactoryAware接口,工厂通过传递自身的实例来调用setBeanFactory()。

5、如果存在与bean关联的任何BeanPostProcessors,则调用preProcessBeforeInitialization() 方法。

6、如果为bean指定了init方法( 的init-method属性),那么将调用它。

7、最后,如果存在与bean关联的任何BeanPostProcessors,则将调用postProcessAfterInitialization() 方法。

8、如果bean实现DisposableBean接口,当spring容器关闭时,会调用destory()。

9、如果为bean指定了destroy方法( 的destroy-method属性),那么将调用它。

5、什么是spring的内部bean?

答:

只有将bean用作另一个bean的属性时,才能将bean声明为内部bean。为了定义bean,Spring的基于XML的配置元数据在 或 中提供了 元素的使用。内部bean总是匿名的,它们总是作为原型。

例如,假设我们有一个Student类,其中引用了Person 类。这里我们将只创建一个Person类实例并在Student中使用它。

Student.java
public class Student {
	private Person person;
	//Setters and Getters }public class Person { private String name; private String address; //Setters and Getters }

bean.xml

<bean id=“StudentBean" class="com.edureka.Student"> <property name="person"> <!--This is inner bean --> <bean class="com.edureka.Person"> <property name="name" value=“Scott"></property> <property name="address" value= “Bangalore"></property> </bean> </property> </bean>
6、什么是spring装配?

答:

当bean在Spring容器中组合在一起时,它被称为装配或bean装配。Spring容器需要知道需要什么bean以及容器应该如何使用依赖注入来将bean绑定在一起,同时装配bean。

7、自动装配有哪些方式?

答:

Spring容器能够自动装配bean。也就是说,可以通过检查BeanFactory的内容让Spring自动解析bean的协作者。

自动装配的不同模式:

no-这是默认设置,表示没有自动装配。应使用显式bean引用进行装配。byName-它根据bean的名称注入对象依赖项。它匹配并装配其属性与XML文件中由相同名称定义的bean。
byType-它根据类型注入对象依赖项。如果属性的类型与XML文件中的一个bean名称匹配,则匹配并装配属性。构造函数-它通过调用类的构造函数来注入依赖项。它有大量的参数。autodetect-首先容器尝试通过构造函数使用autowire装配,如果不能,则尝试通过byType自动装配。

8、自动装配有什么局限?

答:

覆盖的可能性 - 您始终可以使用 和 设置指定依赖项,这将覆盖自动装配。基本元数据类型 - 简单属性(如原数据类型,字符串和类)无法自动装配。令人困惑的性质 - 总是喜欢使用明确的装配,因为自动装配不太精确。

注解
1、什么是基于注解的容器配置?
答:

不使用XML来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上使用注解将配置移动到组件类本身。它可以作为 XML设置的替代方案。例如:Spring的Java配置是通过使用@Bean和@Configuration来实现。 @Bean注解扮演与 元素相同的角色。@Configuration类允许通过简单地调用同一个类中的其他@Bean方法来定义bean间依赖关系。

例如:

@Configuration public class StudentConfig {
	@Bean public StudentBean myStudent() {
		return new StudentBean();
	}
}

2、如何在spring中启动注解装配?
答:

默认情况下,Spring容器中未打开注解装配。因此,要使用基于注解装配,我们必须通过配置<context:annotation-config/> 元素在Spring配置文件中启用它。

3、@Component, @Controller, @Repository
答:

@Service有何区别?

@Component :这将java类标记为bean。它是任何Spring管理组件的通用构造型。spring的组件扫描机制现在可以将其拾取并将其拉入应用程序环境中。

@Controller :这将一个类标记为Spring Web MVC控制器。标有它的Bean会自动导入到IoC容器中。

@Service :此注解是组件注解的特化。它不会对@Component注解提供任何其他行为。您可以在服务层类中使用@Service 而不是@Component,因为它以更好的方式指定了意图。

@Repository :这个注解是具有类似用途和功能的@Component注解的特化。它为DAO提供了额外的好处。它将DAO导入 IoC容器,并使未经检查的异常有资格转换为Spring DataAccessException。
4、@Required注解有什么用?
答:

@Required 应用于bean属性setter方法。此注解仅指示必须在配置时使用bean 定义中的显式属性值或使用自动装配填充受影响的bean属性。如果尚未填充受影响的bean属性,则容器将抛出eanInitializationException。
示例:

public class Employee {
	private String name;
	@Required public void setName(String name){
		this.name=name;
	}
	public string getName(){
		return name;
	}
}

5、@Autowired注解有什么用?
答:

@Autowired可以更准确地控制应该在何处以及如何进行自动装配。此注解用于在setter方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean。默认情况下,它是类型驱动的注入。

public class Employee {
	private String name;
	@Autowired public void setName(String name) {
		this.name=name;
	}
	public string getName(){
		return name;
	}
}

6、@Qualifier注解有什么用?
答:

当您创建多个相同类型的bean并希望仅使用属性装配其中一个bean时,您可以使用@Qualifier 注解和@Autowired通过指定应该装配哪个确切的bean来消除歧义。

例如,这里我们分别有两个类,Employee和EmpAccount。在EmpAccount中,使用@Qualifier指定了必须装配id为emp1的bean。

Employee.java

public class Employee {
	private String name;
	@Autowired public void setName(String name) {
		this.name=name;
	}
	public string getName() {
		return name;
	}
}

EmpAccount.java

public class EmpAccount {
	private Employee emp;
	@Autowired @Qualifier(emp1) public void showName() {
		System.out.println(“Employee name : ”+emp.getName);
	}
}

7、@RequestMapping注解有什么用?@Service有何区别?
答:

@RequestMapping 注解用于将特定HTTP请求方法映射到将处理相应请求的控制器中的特定类/方法。此注释可应用于两个级别:

类级别:映射请求的URL方法级别:映射URL以及HTTP请求方法

数据访问

1、spring DAO有什么用?

答:

Spring DAO使得JDBC,Hibernate或JDO这样的数据访问技术更容易以一种统一的方式工作。这使得用户容易在持久性技术之间切换。

它还允许您在编写代码时,无需考虑捕获每种技术不同的异常。

2、列举Spring DAO抛出的异常。

答:

3、spring JDBC API中存在哪些类?

答:

4、使用Spring访问Hibernate的方法有哪些?

答:

我们可以通过两种方式使用Spring访问Hibernate:

1、 使用Hibernate模板和回调进行控制反转

2、 扩展HibernateDAOSupport并应用AOP拦截器节点

5、列举spring支持的事务管理类型

答:

Spring支持两种类型的事务管理:

1、 程序化事务管理:在此过程中,在编程的帮助下管理事务。它为您提供极大的灵活性,但维护起来非常困难。

2、 声明式事务管理:在此,事务管理与业务代码分离。仅使用注解或基于 XML的配置来管理事务。

6、spring支持哪些ORM框架

答:

AOP

1、什么是AOP

答:

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与OOP不同的抽象软件结构的视角,在OOP中, 我们以类(class)作为我们的基本单元, 而AOP中的基本单元是Aspect(切面)

2、什么是Aspect?
答:

aspect由pointcount和advice组成, 它既包含了横切逻辑的定义, 也包括了连接点的定义Spring AOP就是负责实施切面的框架, 它将切面所定义的横切逻辑编织到切面所指定的连接点中AOP的工作重心在于如何将增强编织目标对象的连接点上, 这里包含两个工作:

1、如何通过pointcut和advice定位到特定的joinpoint上

2、如何在advice中编写切面代码。

以简单地认为, 使用@Aspect注解的类就是切面。

3、什么是切点(JoinPoint)

答:

程序运行中的一些时间点, 例如一个方法的执行, 或者是一个异常的处理在Spring AOP中, join point总是方法的执行点。

4、什么是通知(Advice)?

答:

特定JoinPoint处的Aspect所采取的动作称为Advice。Spring AOP 使用一个 Advice作为拦截器,在JoinPoint “周围”维护一系列的拦截器。

5、有哪些类型的通知(Advice)?

答:

6、指出在spring aop中concern和cross-cuttingconcern的不同之处。

答:

concern是我们想要在应用程序的特定模块中定义的行为。它可以定义为我们想要实现的功能 。
cross-cutting concern是一个适用于整个应用的行为,这会影响整个应用程序。例 如,日志记录,安全性和数据传输是应用程序几乎每个模块都需要关注的问题,因此它们是跨领域的问题

7、AOP有哪些实现方式?

答:

实现AOP的技术,主要分为两大类 :

静态代理

指使用AOP框架提供的命令进行编译,从而在编译阶段就可生成AOP代理类,因此也称为编译时增强:

JDK动态代理

CGLIB

8、Spring AOP and AspectJ AOP有什么区别?

答:

Spring AOP基于动态代理方式实现;AspectJ基于静态代理方式实现。SpringAOP仅支持方法级别的PointCut;提供了完全的 AOP支持,它还支持属性级别的PointCut。

9、如何理解Spring中的代理?

答:

将Advice应用于目标对象后创建的对象称为代理。在客户端对象的情况下,目标对象和代理对象是相同的。

Advice + Target Object = Proxy
10、什么是编织(Weaving)?

答:

为了创建一个advice对象而链接一个aspect和其它应用类型或对象,称为编织(Weaving)。在Spring AOP中,编织在运行时执行。请参考下图:

MVC

1、Spring MVC框架有什么用?

答:

Spring Web MVC框架提供 模型-视图-控制器 架构和随时可用的组件,用于开发灵活且松散耦合的Web应用程序。MVC模式有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和UI逻辑,同时在所有这些元素之间提供松散耦合。

2、描述一下DispatcherServlet的工作流程

答:

DispatcherServlet 的工作流程可以用一幅图来说明:

3、介绍一下WebApplicationContext

答:

1、向服务器发送HTTP请求,请求被前端控制器DispatcherServlet捕获。

2、 DispatcherServlet根据-servlet.xml 中的配置对请求的URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回。

3、 DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法)。

4、提取Request中的模型数据,填充Handler入参,开始执行Handler( Controller)。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:

5、Handler(Controller)执行完成后,向DispatcherServlet返回一个ModelAndView对象;

6、根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给
DispatcherServlet。

7、 ViewResolver 结合Model和View,来渲染视图。

8、视图负责将渲染结果返回给客户端。

Spring面试题(二)

1、什么是spring?

答:

Spring是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。

2、使用Spring框架的好处是什么?

答:

3、Spring由哪些模块组成?

答:

5、BeanFactory–BeanFactory实现举例。

答:

Bean工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离。

最常用的BeanFactory实现是XmlBeanFactory类。

6、XMLBeanFactory

答:
最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根据XML文件中的定义加载beans。该容器从XML文件读取配置元数据并用它去创建一个完全配置的系统或应用。

7、解释AOP模块

答:
AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。

8、解释JDBC抽象和DAO模块。

答:
通过使用JDBC抽象和DAO模块,保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层。它还利用Spring的AOP模块给Spring应用中的对象提供事务管理服务。

9、解释对象/关系映射集成模块。

答:

Spring通过提供ORM模块,支持我们在直接JDBC之上使用一个对象/关系映射映射(ORM)工具,Spring支持集成主流的 ORM 框架,如Hiberate,JDO和iBATISSQL Maps。Spring的事务管理同样支持以上所有 ORM 框架及JDBC。

10、解释WEB模块。

答:

Spring的WEB模块是构建在application context模块基础之上,提供一个适合web应用的上下文。这个模块也包括支持多种面向web的任务,如透明地处理多个文件上传请求和程序级请求参数的绑定到你的业务对象。它也有对JakartaStruts的支持。

11、Spring配置文件

答:

Spring配置文件是个XML文件,这个文件包含了类信息,描述了如何配置它们,以及如何相互调用。

13、什么是Spring IOC容器?

答:

Spring IOC负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

14、IOC的优点是什么?

答:

IOC或依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。

15、ApplicationContext通常的实现是什么?

答:

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

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

 WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean。

16、Bean工厂和Application contexts有什么区别?

答:

Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册为监听器的 bean发布事件。

另外,在容器或容器内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,可以在Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法。

17、一个Spring的应用看起来像什么?

答:

依赖注入

1、什么是 Spring的依赖注入?

答:

依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC 容器)负责把他们组装起来。

2、有哪些不同类型的IOC(依赖注入)方式?

答:

构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。

Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

3、哪种依赖注入方式你建议使用,构造器注入,还是Setter 方法注入?

答:

你两种依赖方式都可以使用,构造器注入和Setter方法注入。最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖。

该面试题答案解析完整文档获取方式

扫码**备注[102]**即可全部免费领取

👇🏻 添加 博主 获取更多资料👇🏻

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值