最近遇到一个问题,在父类中用到一个属性,在子类运行父类方法的时候,如果给子类bean也注入该值,则该值会有多份,这样就没必要了,经人指导说是,在父类中,将这个值定义成static,子类不需注入也能获取该值。
父类中的两个属性:
private static String str;
private static int intNum;
xml配置文件:
<bean id="parentBean" class="test.extendbean.ParentBean">
<property name="str" value="${ParentBean.str}" />
<property name="intNum" value="${ParentBean.intNum}"/>
</bean>
<bean id="subClass3" class="test.extendbean.SubClass3">
测试代码:
@Test
public void testD(){
ApplicationContext context = new ClassPathXmlApplicationContext("test/extendbean/applicationContext.xml");
ParentBean parentBean = (ParentBean)context.getBean("parentBean");
System.out.println(parentBean.getIntNum());
System.out.println(parentBean.getStr());
System.out.println("-----------------------");
SubClass3 subClass3 = (SubClass3)context.getBean("subClass3");
System.out.println(subClass3.getStr());
System.out.println(subClass3.getIntNum());
}
配置文件中给父类注入的值为:
ParentBean.str=1222
ParentBean.intNum=3333333
运行结果如下:
在将父类中两个属性的static值去除之后,再运行,如下:
static属于类变量,不管new了多少个对象,static的值始终都是同一份,解释了这一现象。