【面试官】知道怎么解决Spring循环依赖吗?
- 面试官:你说下对Spring IOC的理解?
- 面试官:AOP呢?
- 面试官:那AOP的原理是什么?
- 面试官:JDK动态代理和CGCLIB动态代理哪个更快?
- 面试官:知道怎么解决Spring循环依赖吗?
大家好,我是南哥。
一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。
文章目录
- SpringIOC和AOP
- SpringIOC
- SpringAOP
- AOP的原理
- Spring循环依赖
- 解决Spring循环依赖
1. Spring IOC和AOP
1.1 Spring IOC
面试官:你说下对Spring IOC的理解?
Spring IOC其实是一种通过描述来创建和获取对象的技术,相比于最原始的通过new来创建对象,所有的对象都交由Spring IOC进行管理,我们管这些对象称为Spring Bean。
Spring Bean可以看成是班级里的学生,那IOC容器就是容纳学生的班级。每个Bean的分类、不同的生命周期,包括Prototype、Singleton、Request、Session、Global session都可以在IOC容器里进行管理。这其实是一种控制反转的思想,我们程序员把控制对象的权限都交由了靠谱的Spring IOC容器。
通过XML方式我们可以向Spring IOC描述我需要一个A对象。当Spring启动时这个Bean也就自动注入到IOC容器等待我们的使用。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bean1" class="org.springframework.beans.factory.ConcurrentBeanFactoryBenchmark$ConcurrentBean"
scope="prototype">
<property name="date" value="2004/08/08"/>
</bean>
</beans>
现在商业公司通过以上XML的方式已经是很少见了,Spring Boot提供了另一种通过注解来描述Bean的方式。Spring Boot底层基于注解的IOC容器是AnnotationConfigApplicationContext
,这个留到我后续的文章再来讲解。
// 通过注解的方式来创建Bean
@Configuration
public class TokenConfig {
/**
* 设置token的类型
**/
@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(jwtAccessTokenConverter()); // 设置token类型为JWT
}
}
1.2 Spring AOP
面试官:AOP呢?
在整个软件编程的历史长河中,最先面世的一种编程范式叫做。但随着软件系统越
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
👉以面试官面试的形式,涵盖了你怒怼大厂面试官、拿下大厂面试所需掌握的核心知识、面试重点 👉相信一定对你顺利通关面试、拿到理想Offer有所帮助 👉花费大量精力去制作本专栏,创作不易,各位的支持就是我创作的最大动力