大厂面试题挑战之spring系列


小伙,我这儿有spring的武功秘籍,不外传之物,学会后可与面试官高谈论阔,让面试官觉得你有东西,掌握了spring的精髓,可以对spring进行修改和定制化业务,符合面试需求,可进来当高价螺丝钉,请看下列内容:

1、描述一下你了解的 Spring Framework?

Spring是一个音乐家开发的框架,用来解决轻量级的IoC/DI和AOP容器的开源框架

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

Spring Core,AOP,ORM,DAO,MVC,WEB,Context。

3、什么是 Spring 配置文件?

Spring配置文件是用于指导Spring工厂进行Bean生产、依赖关系注入(装配)及Bean实例分发的"图纸"。Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图"。Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。

4、使用 Spring 有哪些方式?

  • 作为一个成熟的 Spring Web 应用程序。
  • 作为第三方 Web 框架,使用 Spring Frameworks 中间层。
  • 用于远程使用。 作为企业级 Java Bean,它可以包装现有的 POJO(Plain Old Java Objects)。

5、什么是依赖注入?

“所谓依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。”

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

Spring 的核心容器有两种:
1、BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
2、ApplicationContext(这个接口经常使用):BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用,加载配置文件时候就会把在配置文件对象进行创建。所以我们着重了解下这个接口。

7、区分 BeanFactory 和 ApplicationContext

ApplicationContext 继承了 BeanFactory. 因此,ApplicationContext 增强了一些功能。

BeanFactory 在容器启动的时候不会 实例化 bean, 从容器中获取bean的时候才会进行实例化。

ApplicationContext 在容器启动的时候,就会进行实例化bean ,可以通过设置懒加载,来延迟bean的创建。

8、列举 IoC 的一些好处

它将最小化应用程序中的代码量。
它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例或 JNDI 查找机制。
它以最小的影响和最少的侵入机制促进松耦合。
它支持即时的实例化和延迟加载服务。

9、Spring IoC 的实现机制

1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2、spring提供了两种IOC容器的两种实现方式:(两个工具类,加载spring配置文件)
(1)BeanFactory:IOC容器基本实现,是spring内部的使用接口,不提供开发人员使用;
*加载配置文件时候不会创建对象,在获取(使用)对象时候才创建对象

Beanfactory beanFac=new ClassPathXmlApplicationContext(“bean1.xml”);//此步骤不创建对象
User user = beanFac.getBean(“user”,User.class);

(2)ApplicationContext:BeanFactory接口的子接口,提供更加强大的功能,一般由开发人员使用

ApplicationContext context =new ClassPathXmlApplicationContext(“bean1.xml”);//此步骤创建对象
User user = context.getBean(“user”,User.class);

3、applicationContext接口有实现类:
FileSystemXmlApplicationContext:文件系统盘全路径
ClassPathXmlApplicationContext:类路径

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

  • 基于 xml 配置

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

  • 基于注解配置

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

  • 基于 Java API 配置

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

@Bean 注解扮演与 < bean /> 元素相同的角色。

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

例如:

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

11、什么是 spring bean?

Spring bean是Spring框架在运行时管理的对象

12、spring 支持集中 bean 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 所共享。在 global session 作用域中定义的 bean 被限定于全局 portlet Session
的生命周期范围内。如果你在 web 中使用 global session 作用域来标识 bean,那么 web 会自动当成 session
类型来使用。 仅当用户使用支持 Web 的 ApplicationContext 时,最后三个才可用。

13、什么是 spring 的内部 bean?

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

14、什么是 spring 装配

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

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

bean初始化

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

yName:
通过参数名 自动装配
Spring容器在配置文件中发现bean的autowire属性被设置成byname
之后容器试图匹配、装配和该bean的属性具有相同名字的bean。

byType:
通过参数类型自动装配
Spring容器在配置文件中发现bean的autowire属性被设置成byType
之后容器试图匹配、装配和该bean的属性具有相同类型的bean
当有多个bean符合条件,则抛出错误。

constructor:
这个方式类似于byType,
但是要提供给构造器参数
当没有确定的带参数的构造器参数类型,
将会抛出异常。

autodetect:
首先尝试使用constructor来自动装配
当无法工作,则使用byType方式

no:
默认的方式是不进行自动装配,
通过显式设置ref 属性来进行装配

27、如何在 spring 中启动注解装配?

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

19、@Component, @Controller, @Repository

20、什么是基于注解的容器配置

21、@Required 注解有什么用?

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

23、@Qualifier 注解有什么用?

24、@Autowired 注解有什么用?

25、spring DAO 有什么用?

26、@RequestMapping 注解有什么用?

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

28、说一下springboot的自动装配原理

在这里插入图片描述

29、说一下springboot的AOP原理

Aop实现原理:拦截器+动态代理
Aop要做的事情:在真正的对象代码执行之前,做点什么,执行完之后,再做点什么,废话不多说,直接从代码开始讲起

30、说一下springboot的启动原理

31. spring的循环依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值