作者回复: 👍
作者回复: Spring只解决了单例bean通过setXxx或者@Autowired进行循环依赖:https://blog.csdn.net/qq924862077/article/details/73926268
其他场景可以想办法绕过:https://www.baeldung.com/circular-dependencies-in-spring
作者回复: 汗颜,代码简化的过程中去掉了线程安全的部分,线程安全的版本应该是这样的:
//如果没拿到通过反射创建一个对象实例,并添加到HashMap中
if (singletonObject == null) {
synchronized(singletonObjects){
if(singletonObjects.get(beanName) == null){
singletonObjects.put(beanName,Class.forName(beanName).newInstance());
}
}
}
作者回复: 字段赋初始值一般来说由类的构造函数或者初始化函数完成,但是Spring比较特殊,可以通过反射注入字段值