【面试官】知道怎么解决Spring循环依赖吗?

  • 面试官:你说下对Spring IOC的理解?
  • 面试官:AOP呢?
  • 面试官:那AOP的原理是什么?
  • 面试官:JDK动态代理和CGCLIB动态代理哪个更快?
  • 面试官:知道怎么解决Spring循环依赖吗?

大家好,我是南哥。

一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。

文章目录

  1. SpringIOC和AOP
    1. SpringIOC
    2. SpringAOP
    3. AOP的原理
  2. Spring循环依赖
    1. 解决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%内容,订阅专栏后可继续查看/也可单篇购买

Java面试突击 文章被收录于专栏

👉以面试官面试的形式,涵盖了你怒怼大厂面试官、拿下大厂面试所需掌握的核心知识、面试重点! 👉相信一定对你顺利通关面试、拿到理想Offer有所帮助! 👉花费大量精力去制作本专栏,创作不易,各位的支持就是我创作的最大动力!

全部评论

相关推荐

11-15 20:44
中北大学 后端
自我介绍现在大三&nbsp;学校让实习嘛&nbsp;最早什么时候到岗&nbsp;&nbsp;1.&nbsp;&nbsp;讲一讲你的项目&nbsp;和我们业务相契合的地方算法工程方面的-&nbsp;讲了之前部署的mutualAI社区的事情&nbsp;还有在strikingly的业务-&nbsp;ollama3&nbsp;通译7b&nbsp;2.&nbsp;之前处理的数据都是文本数据&nbsp;有处理过类似pdf这样的文件嘛之前处理的确实是文本数据&nbsp;后面也用过Python的解析库&nbsp;但是时间有点长&nbsp;具体讲不明白了3.&nbsp;&nbsp;Agent框架&nbsp;&nbsp;&nbsp;用过魔搭社区的4.&nbsp;Python的后端框架都用过那几个&nbsp;&nbsp;&nbsp;FastAPI&nbsp;Flask&nbsp;Django都用过5.&nbsp;用没用过FastAPI的后台管理框架&nbsp;和权限管理的框架?-&nbsp;没有了解过&nbsp;之前都是用的Django的6.&nbsp;爬虫框架你用过嘛-&nbsp;没用过框架&nbsp;感觉他们的东西有点重-&nbsp;用过requests框架&nbsp;Aiohttp这样的框架&nbsp;7.&nbsp;Nginx配置跨域&nbsp;-&nbsp;这个好久没做忘了8.&nbsp;&nbsp;Docker&nbsp;和&nbsp;K8s用过嘛-&nbsp;用过docker&nbsp;没用k8s9.&nbsp;&nbsp;MySQL优化&nbsp;怎么优化Mysql-&nbsp;应该是加索引&nbsp;&nbsp;redis缓存&nbsp;本地缓存&nbsp;联合索引&nbsp;MySQL的八股需要看一下10.&nbsp;会构建&nbsp;数据表嘛-&nbsp;这个应该是阿里和三范式那一套&nbsp;记不清楚了(好久没建表了)11.&nbsp;对我们有什么疑问嘛&nbsp;-&nbsp;​问了具体干一些什么事情&nbsp;听着好像tmd运维&nbsp;后端&nbsp;算法全要干&nbsp;好黑奴12.&nbsp;机器学习&nbsp;深度学习了解多少​会一点逻辑回归&nbsp;支持向量机&nbsp;随机森林这样的&nbsp;​深度学习会CNN&nbsp;RNN这样的13.&nbsp;CICD了解过吗&nbsp;&nbsp;&nbsp;没做过工程应用&nbsp;之前&nbsp;配置了一下&nbsp;后面交给另一个人了&nbsp;用gitlab&nbsp;没有机会学习
查看13道真题和解析
点赞 评论 收藏
分享
6 17 评论
分享
牛客网
牛客企业服务