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事务管理

相关推荐
玩毛线的包子4 分钟前
Android Gradle学习(十二)- ASM对于字节码的增删改查
java
晓宜35 分钟前
Java25 新特性介绍
java·python·算法
Seven971 小时前
SpringIOC、DI及Bean线程安全面试题解析
java
TitosZhang1 小时前
BIO、NIO、AIO详解
java·redis·nio
Arva .1 小时前
Spring Boot 配置文件
java·spring boot·后端
IT_Octopus1 小时前
https私人证书 PKIX path building failed 报错解决
java·spring boot·网络协议·https
kfepiza1 小时前
Spring的三级缓存原理 笔记251008
笔记·spring·缓存
程序员清风1 小时前
网易三面:Java中默认使用的垃圾回收器及特点分版本说说?
java·后端·面试
这周也會开心2 小时前
本地部署javaweb项目到Tomcat的三种方法
java·tomcat
小蒜学长2 小时前
jsp基于JavaWeb的原色蛋糕商城的设计与实现(代码+数据库+LW)
java·开发语言·数据库·spring boot·后端