大厂spring面试系列
- 1、描述一下你了解的 Spring Framework?
- 2、Spring Framework 有哪些不同的功能?
- 3、什么是 Spring 配置文件?
- 4、使用 Spring 有哪些方式?
- 5、什么是依赖注入?
- 6、spring 中有多少种 IOC 容器?
- 7、区分 BeanFactory 和 ApplicationContext
- 8、列举 IoC 的一些好处
- 9、Spring IoC 的实现机制
- 10、spring 提供了哪些配置方式?
- 11、什么是 spring bean?
- 12、spring 支持集中 bean scope?
- 13、什么是 spring 的内部 bean?
- 14、什么是 spring 装配
- 15、spring bean 容器的生命周期是什么样的?
- 16、自动装配有哪些方式?
- 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原理
- 30、说一下springboot的启动原理
- 31. 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 容器的生命周期是什么样的?
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要做的事情:在真正的对象代码执行之前,做点什么,执行完之后,再做点什么,废话不多说,直接从代码开始讲起