|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:界说bean时有个abstract属性,能够设置为true或false,默许为false。- <beanid="animal"class="Animal"abstract="true"><propertyname="name"value="elephant"/><propertyname="legs"value="4”/></bean>
复制代码 这里界说了一个叫elepahnt的animalbean,有4条腿,它与其他bean分歧的地方是abstract属性为true。这意味着甚么?意味着这个bean不克不及被实例化,不克不及经由过程ApplicationContext.getBean()的体例来猎取到该bean,也不克不及利用ref属性援用这个bean。不然会抛出BeanIsAbstractException的非常。
你大概会问?坑爹那?声明一个bean不克不及被实例化,那有何用?
固然有效,Spring框架开辟者也不是一帮吃饱了没事干的人,计划一些没用的功效出来。
这要共同着parent属性来用。- <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><beanid="animal"class="Animal"abstract="true"><propertyname="legs"value="4"/></bean><beanid="monkey"parent="animal"><propertyname="name"value="dudu"/></bean></beans>
复制代码 这里有两个bean,一个是animal,指定legs是4,另外一个是monkey,经由过程parent的属性指向animal,指定name为dudu。伶俐的读者大概已猜出来了,parent属性就是子bean能够承继父bean中的属性,而且在子bean中能够重载对应的属性。固然我们没显式的指定monkey的legs为4,实在它已从父beananimal中承继了这个属性。如许的优点是假如在界说大批bean时,发先大批bean存在反复属性界说时,能够抽取一个笼统bean出来,完成这些反复的属性界说,让其他bean都利用parent属性指向这个笼统bean。如许能够年夜年夜简化bean的设置。
除利用parent间接援用父bean的class外,别的也能够利用自界说的class。
Monkey.java- publicclassMonkeyextendsAnimal{privatebooleancanDrawing;publicbooleanisCanDrawing(){returncanDrawing;}publicvoidsetCanDrawing(booleancanDrawing){this.canDrawing=canDrawing;}}
复制代码- <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><beanid="animal"class="Animal"abstract="true"><propertyname="legs"value="4"/></bean><beanid="smartMonkey"class="Monkey"parent="animal"><propertyname="name"value="smallDudu"/><propertyname="canDrawing"value="true"/></bean></beans>
复制代码 如许smartMonkey主动承继了父bean中的legs属性,同时它的class范例也是一个新范例。
有人大概要问了,子bean的class与父bean中的class必定如果承继干系吗?谜底是不是定的。请看这个修正后的Monkeyclass,其自己并未从Animal承继。- 123456789101112131415161718192021222324252627282930
复制代码- publicclassMonkey{privatebooleancanDrawing;privateStringname;privateintlegs;publicbooleanisCanDrawing(){returncanDrawing;}publicvoidsetCanDrawing(booleancanDrawing){this.canDrawing=canDrawing;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetLegs(){returnlegs;}publicvoidsetLegs(intlegs){this.legs=legs;}}
复制代码 然后还设置一样的bean。- <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><beanid="animal"class="Animal"abstract="true"><propertyname="legs"value="4"/></bean><beanid="smartMonkey"class="Monkey"parent="animal"><propertyname="name"value="smallDudu"/><propertyname="canDrawing"value="true"/></bean></beans>
复制代码 仍然可以一般事情,而且smartMonkey中的legs仍是4。
这申明了Spring中利用parent承继父bean中的属性其实不必要子bean和父bean的class在一个承继树上。父bean更像一个模板,子bean可以主动利用父bean中的设置罢了。独一必要注重的是在父bean中界说的属性在子bean中都要存在。
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。 |
|