为什么 beans 有不同的 System identityHashCode() 但是当我尝试比较引用时我得到 true(我使用代理 mod = 目标类)?

时间:2021-08-01 19:53:19

标签: java spring proxy scope

我测试了 bean 的范围及其在不同情况下的行为,我想测试具有单例范围并包含具有原型范围的依赖项的 bean 如何具有不同的依赖对象。 我有两个豆子。第一个bean包含第二个bean

第一豆:

@Component
public class FirstBean {

    private SecondBean secondBean;

    public SecondBean getSecondBean() {
        return secondBean;
    }
    @Autowired
    public void setSecondBean(SecondBean secondBean) {
        this.secondBean = secondBean;
    }
}

Secondbean 是 First bean 的依赖项。它不包含任何逻辑

@Component
@Scope(value = "prototype",proxyMode = ScopedProxyMode.TARGET_CLASS)
public class SecondBean {

}

我有使用 bean 的演示课

public class DemoApp {
    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
        FirstBean firstBean = applicationContext.getBean(FirstBean.class);
        FirstBean firstBean1 = applicationContext.getBean(FirstBean.class);
        SecondBean secondBean = firstBean.getSecondBean();
        SecondBean secondBean1 = firstBean1.getSecondBean();
        System.out.println(secondBean);
        System.out.println(secondBean1);
        System.out.println(secondBean==secondBean1);
    }
}

enter image description here

那么为什么他们引用了一个对象,但他们的哈希码却不同?

0 个答案:

没有答案