Spring 问题整理

1、【切面AOP使用场景? AOP 代理了(三级缓存机制)?】

2、控制反转ioc与依赖注入DI(dependency injection)理解:

简单来说,之前我们需要一个对象,就需要创建一个对象,哪里用哪里创建,而通过spring的控制反转,它把对象都同意管理了起来,当我们需要用的时候,只需要通过注入的方式去取这个对象就好了,至于这个对象什么时候创建的,在哪里创建的,我们不用去关心,举个例子,在activit中,当spring把它集成过来之后,它里面所包含的对象就被spring给管理起来了,我们需要使用他的任务管理也好、模型管理也行,只需要向spring去取就行了,至于他的生命周期是如何管理的,我们不用去关心,开箱即用就好了

3、关于循环依赖问题

循环依赖这个问题现象很好描述,就是A里用了B,B里用了A,这种现象很常见,而且大多数情况下我们都会遇到这种现象,但大部门情况下没问题,

比如说,很多场景下,依赖注入时,我们选择的方式是成员变量注入的方式,这种方式就不会触发循环依赖,即便是出现A、B互相调用的情况,为什么呢?因为成员变量注入与setter方法注入,是在Bean创建完成之后,初始化对象的时候才会出现,而只有在构造方法注入时才会出现这种情况,因为构成方法注入时,是在实例化阶段发生的,而其他注入方式是在初始化阶段发生的,

而默认情况下,spring默认作用域是单例,在单例作用域下,在spring启动时,就把所有的bean都创建好了,同时在创建bean实例时,处理循环依赖问题

复制代码
问题:{
	The dependencies of some of the beans in the application context form a cycle:

   mqttController defined in file [D:\CodeProject\ops-parent\ops-facility\target\classes\com\szy\ops\box\controller\MqttController.class]
	  ↓
   orderManager (field private com.szy.ops.workflow.service.IWfProcessService com.szy.ops.web.order.service.manager.OrderManager.processService)
	  ↓
   IWfProcessServiceImpl defined in file [D:\CodeProject\ops-parent\ops-facility\target\classes\com\szy\ops\workflow\service\impl\IWfProcessServiceImpl.class]
	  ↓
   taskServiceBean defined in class path resource [org/activiti/spring/boot/ProcessEngineAutoConfiguration.class]
┌─────┐
|  processEngine defined in class path resource [org/activiti/spring/boot/ProcessEngineAutoConfiguration.class]
↑     ↓
|  springProcessEngineConfiguration defined in class path resource [org/activiti/spring/boot/ProcessEngineAutoConfiguration.class]
↑     ↓
|  activiti7Config (field private com.szy.ops.workflow.listener.GlobalEventListener com.szy.ops.workflow.config.Activiti7Config.globalEventListener)
↑     ↓
|  globalEventListener (field private org.activiti.engine.HistoryService com.szy.ops.workflow.listener.GlobalEventListener.historyService)
↑     ↓
|  historyServiceBean defined in class path resource [org/activiti/spring/boot/ProcessEngineAutoConfiguration.class]
└─────┘
}
	这里就出现了循环依赖问题,怎么处理呢?就用@Lazy 注解就可以了,@Lazy简单来说就是懒加载,只有在被访问时才会被实例化、初始化,具体原理就是通过创建一个【代理对象】来实现延迟化
{
	@Component
	public class GlobalEventListener implements ActivitiEventListener {

		@Autowired
		@Lazy
		private HistoryService historyService;
	}
}

4、【实例化Bean】,反射的方式生成对象?

5、bean的生命周期:https://gitee.com/fangguochao/spring_bean_life.git

6、spring用了哪些设计模式?【设计模式的理解】

7、spring事务管理

相关推荐
better_liang2 小时前
每日Java面试场景题知识点之-分布式事务处理
java·微服务·面试·springcloud·分布式事务
马克学长2 小时前
SSM青岛恒星科技学院机房管理系统0k0u9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·科技·ssm 框架·教育信息化·机房管理系统·青岛恒星科技学院
q***96583 小时前
Spring Cloud Data Flow 简介
后端·spring·spring cloud
7***68434 小时前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
L***d6704 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
凌波粒4 小时前
Springboot基础教程(3)--自动装配原理/静态资源处理/欢迎页
java·spring boot·后端
java_logo4 小时前
MySQL Server Docker 容器化部署指南
linux·运维·数据库·docker·容器
likuolei4 小时前
XSL-FO 软件
java·开发语言·前端·数据库
凌波粒4 小时前
SpringBoot基础教程(2)--yaml/配置文件注入/数据校验/多环境配置
java·spring boot·后端·spring
p***95004 小时前
Springboot3 Mybatis-plus 3.5.9
数据库·oracle·mybatis