JAVA网站制作之Spring-Context之九:在bean界说中利用承继仓酷云
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:界说bean时有个abstract属性,能够设置为true或false,默许为false。1234<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属性来用。
1234567891011121314<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.java123456789101112publicclassMonkeyextendsAnimal{privatebooleancanDrawing;publicbooleanisCanDrawing(){returncanDrawing;}publicvoidsetCanDrawing(booleancanDrawing){this.canDrawing=canDrawing;}}123456789101112131415<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承继。
123456789101112131415161718192021222324252627282930publicclassMonkey{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。
123456789101112131415<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原来也有许多缺点。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 是一种将安全性(Security)列为第一优先考虑的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 是一种将安全性(Security)列为第一优先考虑的语言 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
页:
[1]