美文网首页
Spring(3) BeanDefinition

Spring(3) BeanDefinition

作者: 百炼 | 来源:发表于2019-08-14 17:16 被阅读0次

    date
    [TOC]

    BeanDefinition

    BeanDefinition接口的继承关系

    BeanDefinition

    BeanDefinition接口的实现类

    BeanDefinition接口的实现类

    RootBeanDefinitionTests

        public void testBeanDefinitionEquality() {
            RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
            bd.setAbstract(true);
            bd.setLazyInit(true);
            bd.setScope("request");
            RootBeanDefinition otherBd = new RootBeanDefinition(TestBean.class);
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.setAbstract(true);
            otherBd.setLazyInit(true);
            otherBd.setScope("request");
            assertTrue(bd.equals(otherBd));
            assertTrue(otherBd.equals(bd));
            assertTrue(bd.hashCode() == otherBd.hashCode());
        }
    
        public void testBeanDefinitionEqualityWithPropertyValues() {
            RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
            bd.getPropertyValues().add("name", "myName");
            bd.getPropertyValues().add("age", "99");
            RootBeanDefinition otherBd = new RootBeanDefinition(TestBean.class);
            otherBd.getPropertyValues().add("name", "myName");
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.getPropertyValues().add("age", "11");
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.getPropertyValues().add("age", "99");
            assertTrue(bd.equals(otherBd));
            assertTrue(otherBd.equals(bd));
            assertTrue(bd.hashCode() == otherBd.hashCode());
        }
    
        public void testBeanDefinitionEqualityWithConstructorArguments() {
            RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
            bd.getConstructorArgumentValues().addGenericArgumentValue("test");
            bd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5));
            RootBeanDefinition otherBd = new RootBeanDefinition(TestBean.class);
            otherBd.getConstructorArgumentValues().addGenericArgumentValue("test");
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(9));
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5));
            assertTrue(bd.equals(otherBd));
            assertTrue(otherBd.equals(bd));
            assertTrue(bd.hashCode() == otherBd.hashCode());
        }
    
        public void testBeanDefinitionEqualityWithTypedConstructorArguments() {
            RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
            bd.getConstructorArgumentValues().addGenericArgumentValue("test", "int");
            bd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5), "long");
            RootBeanDefinition otherBd = new RootBeanDefinition(TestBean.class);
            otherBd.getConstructorArgumentValues().addGenericArgumentValue("test", "int");
            otherBd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5));
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5), "int");
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5), "long");
            assertTrue(bd.equals(otherBd));
            assertTrue(otherBd.equals(bd));
            assertTrue(bd.hashCode() == otherBd.hashCode());
        }
    
        public void testBeanDefinitionHolderEquality() {
            RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
            bd.setAbstract(true);
            bd.setLazyInit(true);
            bd.setScope("request");
            BeanDefinitionHolder holder = new BeanDefinitionHolder(bd, "bd");
            RootBeanDefinition otherBd = new RootBeanDefinition(TestBean.class);
            assertTrue(!bd.equals(otherBd));
            assertTrue(!otherBd.equals(bd));
            otherBd.setAbstract(true);
            otherBd.setLazyInit(true);
            otherBd.setScope("request");
            BeanDefinitionHolder otherHolder = new BeanDefinitionHolder(bd, "bd");
            assertTrue(holder.equals(otherHolder));
            assertTrue(otherHolder.equals(holder));
            assertTrue(holder.hashCode() == otherHolder.hashCode());
        }
    
        public void testBeanDefinitionMerging() {
            RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);
            bd.getConstructorArgumentValues().addGenericArgumentValue("test");
            bd.getConstructorArgumentValues().addIndexedArgumentValue(1, new Integer(5));
            bd.getPropertyValues().add("name", "myName");
            bd.getPropertyValues().add("age", "99");
    
            GenericBeanDefinition childBd = new GenericBeanDefinition();
            childBd.setParentName("bd");
    
            RootBeanDefinition mergedBd = new RootBeanDefinition(bd);
            mergedBd.overrideFrom((BeanDefinition) childBd);
            assertEquals(2, mergedBd.getConstructorArgumentValues().getArgumentCount());
            assertEquals(2, mergedBd.getPropertyValues().size());
            assertEquals(bd, mergedBd);
    
            mergedBd.getConstructorArgumentValues().getArgumentValue(1, null).setValue(new Integer(9));
            assertEquals(new Integer(5), bd.getConstructorArgumentValues().getArgumentValue(1, null).getValue());
        }
    

    BeanDefinitionHolder

    BeanDefinitionHolder是BeanDefinition的包装类,包含1个bean的beanName,和bean的1个到多个别名aliase

    BeanDefinitionHolder.png

    BeanDefinitionHolder 继承结构

    BeanDefinitionHolder 继承结构

    相关文章

      网友评论

          本文标题:Spring(3) BeanDefinition

          本文链接:https://www.haomeiwen.com/subject/uuqnjctx.html