小编Jat*_*hoo的帖子

当 @Autowired 和 @Bean 出现在同一个类中时出现 BeanCurrentlyInCreationException

@Configuration
public class Test1 {

    @Autowired
    private Test3 test3;

}

@Configuration
public class Test2 {

    @Autowired
    private Test3 test3;

    @Bean(name = "test3 ")
    Test3 test3 () {
        return new Test3(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以下错误。

导致:org.springframework.beans.factory.BeanCreationException:创建名称为“test1”的bean时出错:自动装配依赖项注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException: 无法自动装配字段: private Test3 com.package.name.Test1.test3;

嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为“test2”的 bean 时出错:自动装配依赖项注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException: 无法自动装配字段: private Test3 com.package.name.Test2.test3;

嵌套异常是org.springframework.beans.factory。BeanCurrentlyInCreationException:创建名为“test3”的 bean 时出错:请求的 bean 当前正在创建中:是否存在无法解析的循环引用?

这是一个循环依赖的例子吗?如果是的话,有什么解决这个问题的想法吗?

java spring circular-dependency javabeans autowired

6
推荐指数
1
解决办法
1万
查看次数

从理论上讲,ConcurrentHashMap的Segment和HashMap的桶之间有什么区别?

据我所知,在HashMap中,条目(Key,Value)基于散列(Key.hashCode)放置在桶中 - >表示桶位置的索引.如果条目已经放置在该位置,则创建链接列表,并且新条目(如果它具有不同的键 - >通过equals()方法)放置在链接列表的开头.

  1. 我可以将这个概念与ConcurrentHashMap的概念联系起来,但是不是Buckets,而是有各个线程锁定的段.而不是条目,有HashEntry(ies).以类似的方式,创建链接列表,如果插入的键值对不同,则基于键的equals(),它被放置在链表的末尾.
  2. 我说的是正确的:CHM的put是不同步的,因此任何线程都可以访问这个方法,这个put方法计算传递给它的密钥的哈希值并得到段索引(有点像桶).然后,仅针对该段,它调用put方法.现在在Segment下,put方法指定会有一个lock(),这样只有一个线程可以改变特定段中的数据,从而得出结论,如果并发级别为16,则应该有16个线程,因此这些线程将是能够一次仅PUT值一个段.

java collections hashmap concurrenthashmap

4
推荐指数
1
解决办法
5357
查看次数