Spring学习笔记(二)
声明父bean和子bean?? ? ?这个概念是从java中来的,但是却和java中的有着本质的不同。?? ? ?就好像书上说的一样,学习spring的都是对java有些了解的都对父类和子类有着了解。所以这里也没有必要继续从头开始讲。介绍这部本可以从其与java的不同开始。?? ? ?类,无论哪种语言,都可以是看成一个方法和成员变量的共生体。方法决定其行为,而成员变量决定是它的状态,所以在java或者类似的oo语言中,继承往往是比较保守的。既只有相同或者有关系的类才能继承。?? ? ?在Spring中,其注入的,或者说能够控制的只有成员变量这一块。不用考虑方法,所以在spring中的“继承”就没有那么严格,至少我觉得,与其叫做继承,叫做存放公共变量比较合适。
?? ? ?具体的操作就是parent。不过要注入的属性名称需要注意。
方法注入?? ? ?方法注入有两种,?? ? ?一种是方法替换。用的是<replaced-method>。然后创建一个类,实现MethodReplacer方法来实现。?? ? ?另一种方法,可以当做是只是注入其返回值。要把类和你想要注入的方法设定为abstract。然后用<lockup-method>方法决定注入的是哪一个值。?? ? ??? ? ?我觉得这种方法注入有点怪,只适合于一些特定的场合,比方说要访问另一个包里面非public的东西的时候可以使用。但是其他场合我总觉得这种方式不妥。随意这种方法注入我觉得很容易造成代码的混乱。举个书中的例子来说,书中借用了ruby的例子来说明方法的这种注入式多么方便。我觉得这种方法的注入,如果在跨模块之间的发生就会捣乱模块与模块之间的沟通。之所以把代码分为模块,同时控制模块与模块之间的通信,其目的就是为了防止模块相互之间,触碰对方的底层数据,形成耦合。
?? ? ? 当然这一章开头所说的,这一章的内容就好像有一个家里的工具箱,有问题的时候才会用。
注册自定义属性编辑器?? ? ?简单的说,就是你把一些值类型自动转换成对象。具体操作没什么好多说的,直接看代码吧。
Bean的后处理?? ? 让一个类实现BeanPostProccessor方法,然后把其配置到文件中,不加入id,只有class属性?? ? ? ?<bean style="color: #0000ff;">发布和监听事件?? ? 发布方继承ApplicationEvent,接受方实现ApplicationListener方法,然后发布事件是ApplicationContext实例的publicevent
了解Bean内容?? ?了解名称,实现BeanNameAware接口,了解容器,实现ApplicationContextAware