90.为什么要使用 spring?

答:spring是一个开源框架,是个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架

  • 方便结构简化开发
  • AOP编码的支持
  • 声明式事物的支持
  • 方便程序的测试
  • 方便集成各种优势框架
  • 降低Java EE API 的使用难度

91.解释一下什么是 aop?

答:AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。

AOP分为静态AOP和动态AOP:

  • 静态AOP是指AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。
  • 动态AOP是指将切面代码进行动态织入实现的AOP,JDK动态代理。

92.解释一下什么是 ioc?

答:即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

  IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。

93.spring 有哪些主要模块?

答:core模块、aop模块、data access模块、web模块、test模块

94.spring 常用的注入方式有哪些?

答:详细解析:https://blog.csdn.net/a909301740/article/details/78379720

  • 构造方法注入
  • setter注入
  • 基于注解注入

95.spring 中的 bean 是线程安全的吗?

答:

  Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。

最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”。

96.spring 支持几种 bean 的作用域?

答:singleton、prototype、request、session、globalSession五中作用域。

97.spring 自动装配 bean 有哪些方式?

答:可分为四种:

  • byName:按照bean的属性名称来匹配要装配的bean
  • byType:按照bean的类型来匹配要装配的bean
  • constructor:按照bean的构造器入参的类型来进行匹配
  • autodetect(自动检测):先使用constructor进行装配,如果不成功就使用byType来装配

98.spring 事务实现方式有哪些?

答:三种

(1)基于 TransactionProxyFactoryBean的声明式事务管理

(2)基于 @Transactional 的声明式事务管理

(3)基于Aspectj AOP配置事务

https://blog.csdn.net/qq_42914528/article/details/83743726

spring事务实现原理    动态代理

99.说一下 spring 的事务隔离?

答:spring事务传播和隔离

100.说一下 spring mvc 运行流程?

答:DispatcherServlet->HandlerMapping->HandlerAdapter->ModelAndView->ViewResolver->view

https://www.cnblogs.com/hujiapeng/p/5765636.html

101.spring mvc 有哪些组件?

答:

DispatcherServlet(前端处理器)收到请求后,依据HandlerMapping的配置,调用相应的Controller来处理

Controller将处理结果封装成ModelAndView对象,返回给DispatcherServlet.

DispatcherServlet依据ViewResolver的解析,调用相应的视图对象,(如jsp)来生成相应的页面。

102.@RequestMapping 的作用是什么?

答:@RequestMapping注释用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径

103.@Autowired 的作用是什么?

答:spring可以自动帮你把Bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
@Autowired注释进行自动注入时,spring容器中匹配的候选Bean数目必须有且仅有一个。
当找不到一个匹配的Bean时,spring容器将抛出BeanCreationException异常,并指出必须至少拥有一个匹配的Bean。
如果spring容器中拥有多个候选Bean,spring容器在启动时也会抛出BeanCreationException
这个时候就可以借助@Qualifier注释指定注入Bean的名称,这样@Autowired遇到多个候选Bean的问题也就解决了。

最新文章

  1. python基础之面向对象高级编程
  2. Windows无法安装到GPT分区的磁盘的解决方法
  3. .bash_profile for mac‘ envionment variables
  4. linux学习基础6之sed用法详解
  5. Gym 100500B
  6. ajax例子
  7. 【iOS】文件下载小记
  8. Oracle 用户权限管理方法
  9. 听翁恺老师mooc笔记(13)--类型定义和联合
  10. Amazon SNS (Simple Notification Service) Using C# and Visual Studio
  11. 2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)
  12. The Little Prince-11/28
  13. python面向对象之 类
  14. ecshop 安装出错gd_version
  15. SQL Server - 开窗函数
  16. sentinel服务器出现大量的连接问题【转载】
  17. Leapin' Lizards(经典建图,最大流)
  18. Codeforces Beta Round #75 (Div. 1 Only) B. Queue 二分
  19. MySql中concat函数的用法(链接字符串)
  20. python基础之模块二

热门文章

  1. 表单提交:button input submit 的区别
  2. python 字符串与16进制 转化
  3. Rancher2.0中邮件通知的设置
  4. Hive常用操作命令
  5. CentOS7.5 Python3安装pip报错:ModuleNotFoundError: No module named '_ctypes' --Python3
  6. HTTP协议(二)之确保web安全的HTTPS
  7. 1)python,现在用过的,后面推出每日练习语法与深度挖掘应用
  8. MapReduce的倒排索引
  9. npm 设置和取消代理配置
  10. cout关闭输出缓冲,调试用