前言
Spring 作为一个轻量级的 Java 开发框架,将面向接口的编程思想贯穿整个 Java 系统应用,因此在 Java 面试中常被提。本次介绍的主要是解析面试过程中如果从源码角度分析常见的问题。
1、不同版本的 Spring Framework 有哪些主要功能?
![](https://i-blog.csdnimg.cn/blog_migrate/8b961126d3aa37ed3e716de8e5e55df9.png)
2、什么是 Spring Framework?
![](https://i-blog.csdnimg.cn/blog_migrate/b5faa37c2c2c4afe262f88e8f8280016.png)
3、列举 Spring Framework 的优点。
![](https://i-blog.csdnimg.cn/blog_migrate/4a269ee34feba67aabac3e31b5bc8ed3.png)
4、Spring Framework 有哪些不同的功能?
![](https://i-blog.csdnimg.cn/blog_migrate/1d46fc7247fda2251b360ea53956e47c.png)
5、Spring Framework 中有多少个模块,它们分别是什么?
![](https://i-blog.csdnimg.cn/blog_migrate/dd96bd6467089178f027e86debe02691.png)
6、什么是 Spring 配置文件?
![](https://i-blog.csdnimg.cn/blog_migrate/f9d3035cdde1ace3a09003b1d32641ec.png)
7、Spring 应用程序有哪些不同组件?
![](https://i-blog.csdnimg.cn/blog_migrate/65772f8174dbdbcc41967ebd7bad188c.png)
8、使用 Spring 有哪些方式?
![](https://i-blog.csdnimg.cn/blog_migrate/af2f29739f198410989fcededc54cf8f.png)
9、什么是 Spring IOC 容器?
![](https://i-blog.csdnimg.cn/blog_migrate/bb021df9881528a1d7a958acc877f32e.png)
10、什么是依赖注入?
![](https://i-blog.csdnimg.cn/blog_migrate/54ce94d6ec0ee7129f6d624f249786ad.png)
11、可以通过多少种方式完成依赖注入?
![](https://i-blog.csdnimg.cn/blog_migrate/7a6d50bbab096646e22186e9fd4e6cc2.png)
12、区分构造函数注入和 setter 注入。
![](https://i-blog.csdnimg.cn/blog_migrate/47d9aae5a7534bb675775ebdaab9383b.png)
13、spring 中有多少种 IOC 容器?
![](https://i-blog.csdnimg.cn/blog_migrate/4f529a2bac2aebc1b8b9e0bd7ff73534.png)
14、区分 BeanFactory 和 ApplicationContext。 15、列举 IoC 的一些好处。
![](https://i-blog.csdnimg.cn/blog_migrate/da4733dd1070ec22e47d66820215ba85.png)
15、列举 IoC 的一些好处。
![](https://i-blog.csdnimg.cn/blog_migrate/0fe2fdf743e7d020dc84be679639f75c.png)
16、Spring IoC 的实现机制。
![](https://i-blog.csdnimg.cn/blog_migrate/901b599160b885260f7908f4f2c896da.png)
17、什么是 spring bean?
![](https://i-blog.csdnimg.cn/blog_migrate/3bbb854ec7c946c66b9a4b02fc71ddea.png)
18、spring 提供了哪些配置方式?
![](https://i-blog.csdnimg.cn/blog_migrate/04792b8bc179984b9f803b8f65e6b97b.png)
19、spring 支持集中 bean scope?
![](https://i-blog.csdnimg.cn/blog_migrate/e24c8e58053c24c7699ee6afb58b3237.png)
20、spring bean 容器的生命周期是什么样的?
![](https://i-blog.csdnimg.cn/blog_migrate/1172b14c17325e5024a0dc686f55ddb1.png)
*******************
21、什么是 spring 的内部 bean?
![](https://i-blog.csdnimg.cn/blog_migrate/3befa387ce5699b6dddd30b709b9b2fa.png)
22、什么是 spring 装配
![](https://i-blog.csdnimg.cn/blog_migrate/a60a0469a4d9c69e202a13a0bddeb7f3.png)
23、自动装配有哪些方式?
![](https://i-blog.csdnimg.cn/blog_migrate/ca3f9342c4ba040d0fc58a97720b5534.png)
24、自动装配有什么局限?
![](https://i-blog.csdnimg.cn/blog_migrate/86ebf736c1f4f624fc36947b7b05e908.png)
25、什么是基于注解的容器配置
![](https://i-blog.csdnimg.cn/blog_migrate/8423870563320168e1e018ec6f6a3530.png)
26、如何在 spring 中启动注解装配?
![](https://i-blog.csdnimg.cn/blog_migrate/4433229e855d191d8e17fb6530189ce8.png)
27、@Component, @Controller, @Repository,@Service 有何
区别?
![](https://i-blog.csdnimg.cn/blog_migrate/75ddd0d44c95e8924a42d857ea444063.png)
28、@Required 注解有什么用?
![](https://i-blog.csdnimg.cn/blog_migrate/9c01c6b844ecf679ecc330d09ad9131f.png)
29、@Autowired 注解有什么用?
![](https://i-blog.csdnimg.cn/blog_migrate/7caa57c3383bc3d1dd46b0408f9372a3.png)
30、@Qualifier 注解有什么用?
![](https://i-blog.csdnimg.cn/blog_migrate/dfc17e061d9668be4f197337447f2ce2.png)
31、@RequestMapping 注解有什么用?
![](https://i-blog.csdnimg.cn/blog_migrate/e182350896bee5660497a2610785acaf.png)
32、spring DAO 有什么用?
![](https://i-blog.csdnimg.cn/blog_migrate/4b72d079cdde049c377f3cee7dd75c72.png)
33、列举 Spring DAO 抛出的异常。
![](https://i-blog.csdnimg.cn/blog_migrate/82357bcb2e54adea3d3289f5ec1e81b6.png)
34、spring JDBC API 中存在哪些类?
![](https://i-blog.csdnimg.cn/blog_migrate/789a0514b4152ac0c4b1c14623d8c65c.png)
35、使用 Spring 访问 Hibernate 的方法有哪些?
![](https://i-blog.csdnimg.cn/blog_migrate/b8527995d9beb5e47d238e48eedf46ba.png)
36、列举 spring 支持的事务管理类型
![](https://i-blog.csdnimg.cn/blog_migrate/8740592c9039de12ab1ced2db7cc4c43.png)
37、spring 支持哪些 ORM 框架
![](https://i-blog.csdnimg.cn/blog_migrate/79a69d53f26839260183d161d52cff64.png)
38、什么是 AOP?
![](https://i-blog.csdnimg.cn/blog_migrate/d83d0899465868a2e8219e29635514e7.png)
39、什么是 Aspect?
![](https://i-blog.csdnimg.cn/blog_migrate/1bb497eecfe1692b6623227b3c08ca75.png)
![](https://i-blog.csdnimg.cn/blog_migrate/22321a8bef5cde196475a6585a78f659.png)
40、什么是切点(JoinPoint)
![](https://i-blog.csdnimg.cn/blog_migrate/8410002511b78ec2716046dbc83069b9.png)
41、什么是通知(Advice)?
![](https://i-blog.csdnimg.cn/blog_migrate/8cb3e53ed05c6bdaf893a45f0dcb8f1e.png)
42、有哪些类型的通知(Advice)?
![](https://i-blog.csdnimg.cn/blog_migrate/e7abf8d1294b1afcb67e11286a563885.png)
43、指出在 spring aop 中 concern 和 cross-cuttingconcern
的不同之处。
![](https://i-blog.csdnimg.cn/blog_migrate/ffdbff1e30683848a432323916d1b91f.png)
44、AOP 有哪些实现方式?
![](https://i-blog.csdnimg.cn/blog_migrate/7d2ee20032162615201518b2066e052d.png)
45、Spring AOP and AspectJ AOP 有什么区别?
![](https://i-blog.csdnimg.cn/blog_migrate/f94e11349ccab3b1ae24510f0289dacf.png)
46、如何理解 Spring 中的代理?
![](https://i-blog.csdnimg.cn/blog_migrate/331e2421e06177c7f40be5bd58fd167a.png)
47、什么是编织(Weaving)?
![](https://i-blog.csdnimg.cn/blog_migrate/43c5e5d0b5e3c06b48dc322a0965122a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2ac4e5153161ca11adc5382c28718d4c.png)
48、Spring MVC 框架有什么用?
![](https://i-blog.csdnimg.cn/blog_migrate/121ca4e87352cb839477d9238b698b7f.png)
49、描述一下 DispatcherServlet 的工作流程
![](https://i-blog.csdnimg.cn/blog_migrate/1889681819098fc253213445ff7a06f9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cca1d9a4d2f7b84f3dcb217c5d3c232b.png)
50、介绍一下 WebApplicationContext
![](https://i-blog.csdnimg.cn/blog_migrate/59988e31947229cbfa8e0e82a52e28a7.png)
*******************
![](https://i-blog.csdnimg.cn/blog_migrate/4c8c75c356e4d7a96d89465a61a44594.png)
51、什么是 spring?
![](https://i-blog.csdnimg.cn/blog_migrate/731a652d10a6a30b44114132a83b75a2.png)
52、使用 Spring 框架的好处是什么?
![](https://i-blog.csdnimg.cn/blog_migrate/05b038e9ca1e29ae72a4657ded57a2ee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5818ee68f2550ea6023b97d1e7965a31.png)
53、Spring 由哪些模块组成?
![](https://i-blog.csdnimg.cn/blog_migrate/cb614fefef6e52266b7fb377697a93f7.png)
54、核心容器(应用上下文) 模块。
![](https://i-blog.csdnimg.cn/blog_migrate/890b36b561b360efb30e28674e69eb16.png)
55、BeanFactory – BeanFactory 实现举例。
![](https://i-blog.csdnimg.cn/blog_migrate/dc6264189c5791bcd2359af167320587.png)
66、XMLBeanFactory
![](https://i-blog.csdnimg.cn/blog_migrate/308815d912171ee7a1f4e159097a4630.png)
67、解释 AOP 模块
![](https://i-blog.csdnimg.cn/blog_migrate/fb21785d78f4c0b9c7b26952be637ce6.png)
69、解释对象/关系映射集成模块。
![](https://i-blog.csdnimg.cn/blog_migrate/23c4203bcfcbeefd362b9c5288b55ceb.png)
70、解释 WEB 模块。
![](https://i-blog.csdnimg.cn/blog_migrate/b9e5ce5db49181f8b9101507ebe2b024.png)
72、Spring 配置文件
![](https://i-blog.csdnimg.cn/blog_migrate/cc1a22cbb22f3a2236bb1de1abd2414a.png)
73、什么是 Spring IOC 容器?
![](https://i-blog.csdnimg.cn/blog_migrate/214240d16ed2872d6754191bf6ac4297.png)
74、IOC 的优点是什么?
![](https://i-blog.csdnimg.cn/blog_migrate/961efe28d6fade4db675542dcf7c303a.png)
75、ApplicationContext 通常的实现是什么?
![](https://i-blog.csdnimg.cn/blog_migrate/e4b9c1427cb8e96684d89cdf6f821229.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c925759fa12ec0383404ece43d9b189c.png)
76、Bean 工厂和 Application contexts 有什么区别?
![](https://i-blog.csdnimg.cn/blog_migrate/1fd3e4c39f9d7b740eb456256737c19d.png)
77、一个 Spring 的应用看起来象什么?
![](https://i-blog.csdnimg.cn/blog_migrate/41350c297cf304a36e4c09a398a29b35.png)
78、什么是 Spring 的依赖注入?
![](https://i-blog.csdnimg.cn/blog_migrate/95b9b36b92531b004801b25760413f57.png)
79、有哪些不同类型的 IOC(依赖注入)方式?
![](https://i-blog.csdnimg.cn/blog_migrate/2a005d51183779b18c0c946e571f23cb.png)
80、哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入?
![](https://i-blog.csdnimg.cn/blog_migrate/0cbf0a32505c58a6cd4b70c5f6e0e2c9.png)
81.什么是 Spring beans?
![](https://i-blog.csdnimg.cn/blog_migrate/bc3ba3529ae34f05855085bbda4fca77.png)
82、一个 Spring Bean 定义 包含什么?
![](https://i-blog.csdnimg.cn/blog_migrate/4c58922ef4ede125dea7c68f33a6627c.png)
83、如何给 Spring 容器提供配置元数据?
![](https://i-blog.csdnimg.cn/blog_migrate/9d2c67c03d132d01d6760066c396220f.png)
84、你怎样定义类的作用域?
![](https://i-blog.csdnimg.cn/blog_migrate/0d972dbf8b1605f5add4b5ca29531a8b.png)
85、解释 Spring 支持的几种 bean 的作用域。
![](https://i-blog.csdnimg.cn/blog_migrate/c7a7d41ce4c2d4398f01622f6d60ddd9.png)
86、Spring 框架中的单例 bean 是线程安全的吗?
![](https://i-blog.csdnimg.cn/blog_migrate/bc24d83119e4ab471e8d2d76e2e94287.png)
87、解释 Spring 框架中 bean 的生命周期。
![](https://i-blog.csdnimg.cn/blog_migrate/4724f76313327fc74a3f2e8587f37ac5.png)
88、哪些是重要的 bean 生命周期方法?你能重载它们吗?
![](https://i-blog.csdnimg.cn/blog_migrate/63df5e33bce0f6d01243cf1e2705bb20.png)
89、什么是 Spring 的内部 bean?
![](https://i-blog.csdnimg.cn/blog_migrate/69b5d87da824542e289b13aac2ef1d70.png)
90、在 Spring 中如何注入一个 java 集合?
![](https://i-blog.csdnimg.cn/blog_migrate/f756f33ed0cb0198e9fabcdb403e5821.png)
91、什么是 bean 装配?
![](https://i-blog.csdnimg.cn/blog_migrate/299e29271bb979f956217d9cce8eb992.png)
92、什么是 bean 的自动装配?
![](https://i-blog.csdnimg.cn/blog_migrate/fc0693072af80639989739cba46e770c.png)
93、解释不同方式的自动装配 。
![](https://i-blog.csdnimg.cn/blog_migrate/841ae863f7eedbcdbbb80ea496eaf155.png)
***********************************************
94.自动装配有哪些局限性 ?
![](https://i-blog.csdnimg.cn/blog_migrate/ef914782f7c4e9c2e454300e4921963f.png)
95、你可以在 Spring 中注入一个 null 和一个空字符串吗?
可以
96、什么是基于 Java 的 Spring 注解配置? 给一些注解的例 子.
![](https://i-blog.csdnimg.cn/blog_migrate/c4b1dc8e004ad962979c937caa42e713.png)
97、什么是基于注解的容器配置?
![](https://i-blog.csdnimg.cn/blog_migrate/6d743eb4895e4d7b42fe77b8b26b675e.png)
98、怎样开启注解装配?
![](https://i-blog.csdnimg.cn/blog_migrate/9f647f25ba266785a66a7019f79e5b67.png)
99、@Required 注解
![](https://i-blog.csdnimg.cn/blog_migrate/0282f4f3f52c6b7ebfccecd2dcc73147.png)
*******************
100、@Autowired 注解
![](https://i-blog.csdnimg.cn/blog_migrate/9b4a4f18491d598b415cd4c4b712ae63.png)
101、@Qualifier 注解
![](https://i-blog.csdnimg.cn/blog_migrate/74c3142a4ff4a39a8a27ee3651e0ffad.png)
102.在 Spring 框架中如何更有效地使用 JDBC?
![](https://i-blog.csdnimg.cn/blog_migrate/351dcbebf5179098584352bc8f941b4b.png)
103、JdbcTemplate
![](https://i-blog.csdnimg.cn/blog_migrate/d28ed1a6417412ab4b272ec6e3ae2bdd.png)
104、Spring 对 DAO 的支持
![](https://i-blog.csdnimg.cn/blog_migrate/f117fd4e6accb98c6c8c22a468be1ee7.png)
105、使用 Spring 通过什么方式访问 Hibernate?
![](https://i-blog.csdnimg.cn/blog_migrate/c8c2ac75198cc067e33fab23410d87ba.png)
106、Spring 支持的 ORM
![](https://i-blog.csdnimg.cn/blog_migrate/b8dc4548ab2c8d407db5f39941d973a2.png)
107. 如何通过 HibernateDaoSupport 将 Spring 和 Hibernate 结合起来?
![](https://i-blog.csdnimg.cn/blog_migrate/814d41366df02d4838cca71cfc37d7d6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/53ca0b3c63c87b6a8901344da4f8bed9.png)
108、Spring 支持的事务管理类型
![](https://i-blog.csdnimg.cn/blog_migrate/16adfa1c828618858b9c504ff3aed1dc.png)
109、Spring 框架的事务管理有哪些优点?
![](https://i-blog.csdnimg.cn/blog_migrate/a33577009cd21f7b8f456c6cf1e66bf0.png)
110、你更倾向用那种事务管理类型?
![](https://i-blog.csdnimg.cn/blog_migrate/011c1fb654206376d35879693a7b3617.png)
111、解释 AOP
![](https://i-blog.csdnimg.cn/blog_migrate/2504bbafd523eba7b755af79b10a8287.png)
112、Aspect 切面
![](https://i-blog.csdnimg.cn/blog_migrate/c5d45a3887b2f4fa1851405e1fd27283.png)
113、在 Spring AOP 中,关注点和横切关注的区别是什么?
![](https://i-blog.csdnimg.cn/blog_migrate/6bace33794ad7585524f23d395ea9d65.png)
114、连接点
![](https://i-blog.csdnimg.cn/blog_migrate/b457aef33311dd098b6c670b51444cab.png)
115、通知
![](https://i-blog.csdnimg.cn/blog_migrate/33eb0a15f8f1ab6f74b3dd3c9032ea45.png)
116、切点
![](https://i-blog.csdnimg.cn/blog_migrate/4015fb40438c260f9a7af7cfb25e8371.png)
117、什么是引入?
引入允许我们在已存在的类中增加新的方法和属性。
118、什么是目标对象?
被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。
119、什么是代理?
代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。
120、有几种不同类型的自动代理?
![](https://i-blog.csdnimg.cn/blog_migrate/091cfae3fd158008228b61ab884085c8.png)
***********************************************
121、什么是织入。什么是织入应用的不同点?
![](https://i-blog.csdnimg.cn/blog_migrate/8f7ade6784e135756e8aee71d44063fd.png)
122、解释基于 XML Schema 方式的切面实现。
在这种情况下,切面由常规类以及基于 XML 的配置实现。
123、解释基于注解的切面实现
在这种情况下(基于 @AspectJ 的实现),涉及到的切面声明的风格与带有 java5 标注的普通 java 类一致。
124、什么是 Spring 的 MVC 框架?
![](https://i-blog.csdnimg.cn/blog_migrate/54cb144c4c993ccf1b28e99acdb2edc3.png)
125、DispatcherServlet
Spring 的 MVC 框架是围绕 DispatcherServlet 来设计的,它用来处理所有的 HTTP 请求和响应。
126、WebApplicationContext
WebApplicationContext 继承了 ApplicationContext 并增加了一些 WEB 应用必备的特有 功能,它不同于一般的 ApplicationContext ,因为它能处理主题,并找到被关联的 servlet。
127、什么是 Spring MVC 框架的控制器?
控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。Spring 用一个非常抽象的方式实现了一个控
制层,允许用户创建多种用途的控制器。
最后
小编分享的文章到这里就结束了,整理不易,欢迎大家一起交流,喜欢小编分享的文章记得关注我点赞哟,感谢支持!
感兴趣且需要的朋友关注+私信【学习】或VX公众号【小马的后端宇宙】即可