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
    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属性来指明是继承关系,而并非正真意义的继承。

  实现代码:

Code
      <!--抽象对象定义和子对象定义-->
      <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类。

  输出效果:

  参考Spring.NET中文手册

  代码下载

  返回目录

转载于:https://www.cnblogs.com/GoodHelper/archive/2009/11/11/SpringNet_Life.html

Spring.NET学习笔记11——自定义对象行为(基础篇) Level 200相关推荐

  1. Spring.NET学习笔记10——方法的注入(基础篇) Level 200

    多数用户都会将容器中的大部分对象布署为singleton模式.当一个singleton对象需要和另一个singleton对象协作,或者一个非singleton对象需要和另一个非singleson对象协 ...

  2. Spring.NET学习笔记15——AOP的配置(基础篇) Level 200

    上篇我学习了Spring.NET的四种通知类型,AOP的实现方案比较复杂,是通过代码实现的.而Spring.NET框架给我们提供了配置的方式来实现AOP的功能.到目前为止,我们已经讨论过使用Proxy ...

  3. Spring.NET学习笔记13——AOP的概念(基础篇) Level 200

    上篇我们简单的了解了AOP的应用场景,知道AOP编程的重要性.这篇我们先看一段代码,来开始今天的学习. 回顾与上篇类似的代码:SecurityService类的IsPass判断用户名为"ad ...

  4. Spring.NET学习笔记12——面向切面编程(基础篇) Level 300

    AOP即面向切面编程(Aspect Oriented Programming的缩写),是OOP(面向对象编程)的一种延续形式.是通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添 ...

  5. Spring.Net学习笔记九(自定义对象行为)

    Spring.NET通过几个专门的接口来控制容器中对象的行为.说到对象的行为无非就要提到对象的生命周期控制.类似在WinForm开发,Form生命周期中,Load方法为Form的载入方法和Dispos ...

  6. 动力节点王鹤SpringBoot3学习笔记——第二章 掌握SpringBoot基础篇

    目录 二.掌控SpringBoot基础篇 2.1 Spring Boot ? 2.1.1 与Spring关系 2.1.2 与SpringCloud关系 2.1.3  最新的Spring Boot3 新 ...

  7. Spring框架学习笔记11:基于Java配置方式SSM框架西蒙购物网

    文章目录 一.网站功能需求 二.网站设计思路 1.设计模式 2.网站前台 3.网站后台 4.购物流程图 三.网站运行效果 四.网站实现步骤 (一)创建数据库与表 1.创建数据库 - simonshop ...

  8. Spring.NET学习笔记1——控制反转(基础篇) Level 200

    在学习Spring.NET这个控制反转(IoC)和面向切面(AOP)的容器框架之前,我们先来看一下什么是控制反转(IoC). 控制反转(Inversion of Control,英文缩写为IoC),也 ...

  9. Spring.NET学习笔记8——集合类型的注入(基础篇) Level 200

    Spring.NET还支持集合类型的注入.而且使用起来也比较方便. 一.ILIst类型 使用<list>元素作为ILIst的标签,value为集合中元素的值.也可以注入对象,甚至关联其它对 ...

最新文章

  1. 马年计划2014-2-21
  2. 收藏:JavaScript
  3. C# 集合类(三):Stack
  4. 重温强化学习之基于模型方法:动态规划
  5. vs五子棋c语言代码,五子棋代码C语言版.doc
  6. c++ fstream用得多不?_自动挡中的“手自一体”,其实很好用,但真正会用的不多...
  7. 深度学习——第一次浪潮、寒冬及解冻
  8. WF4.0实战(九):猜数字游戏,测下你的智力
  9. 尚学堂马士兵Linux视频教程笔记
  10. Mac谷歌浏览器添加JSONView的插件以提高开发的效率
  11. 转:衡量数据的离散程度
  12. pandas数据分组聚合——groupby()、aggregate()、apply()、transform()和filter()方法详解
  13. 读书笔记《学习之道》芭芭拉·奥克利 - 一 书中说了什么
  14. jacob.jar 操作word文件 添加水印、图片(附查阅Microsoft Office VBA参考文档方式)
  15. 解决Windows安装MySQL时出现msvcr120.dll文件丢失问题(完美解决)
  16. 《未来已来- 马云》笔记
  17. 微信公众号商城是否需要云服务器,云商城公众号绑定、微信支付配置文档
  18. java学习笔记——spring框架 常遇到问题链接搜集
  19. unity---Mesh网格编程(四)
  20. Settings数据在手机中的位置

热门文章

  1. JZOJ 1533. 郁闷的gxg
  2. mac 当前文件夹打开终端_Mac上的这些实用你技巧,你知道几个?
  3. python中head_Python pandas.DataFrame.head函数方法的使用
  4. python内存管理说法错误_python面试题总结1-内存管理机制
  5. python正则表达式修饰符_python正则表达式,看完这篇文章就够了...
  6. python设计_设计和历史常见问题
  7. 周志华眼中的贝叶斯方法(转)
  8. Faster R-CNN 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》论文笔记
  9. 怎么用esc服务器做网站,云服务器esc能做网站
  10. sqlserver/mysql按天,按小时,按分钟统计连续时间段数据