Spring.Net学习笔记九(自定义对象行为)
2015-08-06 15:19
447 查看
Spring.NET通过几个专门的接口来控制容器中对象的行为。说到对象的行为无非就要提到对象的生命周期控制。类似在WinForm开发,Form生命周期中,Load方法为Form的载入方法和Dispose方法为Form的销毁方法。Spring.NET都能完美的实现这些需求。
一、生命周期接口
在使用Spring.NET框架的时候通常遇到怎样初始化和销毁非托管资源(如数据库连接)的麻烦,下面的解决方案可能对您有所帮助。
1.初始化行为
继承Spring.Objects.Factory.IInitializingObject接口或者配置object节点的init-method属性,Spring.NET的IoC框架就会帮我们在该对象被实例后调用配置好的初始化方法。
2.销毁行为
继承System.IDisposable接口或者在object节点配置destroy-method属性,Spring.NET会帮我们在容器被销毁时调用它。
实现代码:
Person
二、抽象对象定义和子对象定义
对象定义可能会包含大量的信息,比如与容器相关的信息(即初始化方法、静态工厂方法名等)、构造器参数和属性值等。子对象定义是指从一个父对象定义中继承了配置数据的对象定义。子对象定义可以根据需要重写或添加某些配置的值。使用父对象和子对象的定义方式可能会节省大量的键入工作。实际上这是设计模式中模板模式的一种形式。个人认为可以解决“子类”与“父类”之间的耦合。
在object节点中设置parent属性来指明是继承关系,而并非正真意义的继承。
实现代码:
我们可以看出Child类并没有继承Parent类。
输出效果:
一、生命周期接口
在使用Spring.NET框架的时候通常遇到怎样初始化和销毁非托管资源(如数据库连接)的麻烦,下面的解决方案可能对您有所帮助。
1.初始化行为
继承Spring.Objects.Factory.IInitializingObject接口或者配置object节点的init-method属性,Spring.NET的IoC框架就会帮我们在该对象被实例后调用配置好的初始化方法。
2.销毁行为
继承System.IDisposable接口或者在object节点配置destroy-method属性,Spring.NET会帮我们在容器被销毁时调用它。
实现代码:
Person
public class Person { public void Init() { Console.WriteLine("我长大了"); } public void Destroy() { Console.WriteLine("我衰老了"); } } <!--生命周期接口--> <object id="person" type="SpringNetProcessor.Person, SpringNetProcessor" init-method="Init" destroy-method="Destroy" />
二、抽象对象定义和子对象定义
对象定义可能会包含大量的信息,比如与容器相关的信息(即初始化方法、静态工厂方法名等)、构造器参数和属性值等。子对象定义是指从一个父对象定义中继承了配置数据的对象定义。子对象定义可以根据需要重写或添加某些配置的值。使用父对象和子对象的定义方式可能会节省大量的键入工作。实际上这是设计模式中模板模式的一种形式。个人认为可以解决“子类”与“父类”之间的耦合。
在object节点中设置parent属性来指明是继承关系,而并非正真意义的继承。
实现代码:
<!--抽象对象定义和子对象定义--> <object id="parent" type="SpringNetProcessor.Parent, SpringNetProcessor" abstract="true"> <property name="Name" value="parent"/> </object> <object id="child" type="SpringNetProcessor.Child, SpringNetProcessor" parent="parent"/> public abstract class Parent { public string Name { get; set; } } public class Child { public string Name { get; set; } }
我们可以看出Child类并没有继承Parent类。
输出效果:
相关文章推荐
- StringTokenizer
- 图解Spring框架的设计理念与设计模式
- Eclipse 4.5.0 离线安装 Veloeclipse 插件
- 【hibernate】spring+ jpa + hibername 配置过程遇到的问题
- Java笔试题及答案
- Java 连接数据库的JDBC
- java泛型
- Java中实现用户点击关闭窗口按钮后提示用户,选择“是”后退到父窗口,选择“否”留在原窗口
- JAVA学习篇--Java类加载
- java中Collections.sort的用法
- Spring.Net学习笔记八(方法的注入)
- java多线程关键字_volatile
- J2EE学习篇之--Spring技术详解
- java多线程核心概念
- SpringMVC Restful风格 css、js、img资源失效的问题
- spring mvc拦截POST请求防CSRF攻击
- 新建项目的方法
- spring定时任务
- Java JDK7安装与环境变量配置详细图解
- java的反射