Spring.Net学习笔记九(自定义对象行为)
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属性来指明是继承关系,而并非正真意义的继承。
实现代码:
<!--抽象对象定义和子对象定义-->
<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类。
输出效果:
转载于:https://www.cnblogs.com/wangyhua/p/IOC9.html
Spring.Net学习笔记九(自定义对象行为)相关推荐
- Spring.NET学习笔记11——自定义对象行为(基础篇) Level 200
Spring.NET通过几个专门的接口来控制容器中对象的行为.说到对象的行为无非就要提到对象的生命周期控制.类似在WinForm开发,Form生命周期中,Load方法为Form的载入方法和Dispos ...
- Spring.NET学习笔记——目录(原)
目录 前言 Spring.NET学习笔记--前言 第一阶段:控制反转与依赖注入IoC&DI Spring.NET学习笔记1--控制反转(基础篇) Level 200 Spring.NET学习笔 ...
- Spring框架学习笔记(三)(AOP,事务管理)
Spring框架学习笔记(三) 九.AOP 9.1 AOP的注解配置 (1) 新建计算器核心功能(模拟:不能在改动核心代码) (2) 建立一个普通的Java类写增强代码(面向切面编程),使用Sprin ...
- Spring Boot学习笔记-进阶(3)
文章目录 Spring Boot学习笔记-进阶(3) 一.Spring Boot与缓存 二.Spring Boot与消息 三.Spring Boot与检索 四.Spring Boot与任务 异步任务 ...
- Spring Boot学习笔记-基础(2)
Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...
- Spring Boot学习笔记(1)
文章目录 Spring Boot学习笔记(1) Spring Boot 整合 JSP Spring Boot HTML Thymeleaf 常用语法 Spring Boot 数据校验 Spring B ...
- Spring Cloud 学习笔记(2 / 3)
Spring Cloud 学习笔记(1 / 3) Spring Cloud 学习笔记(3 / 3) - - - 56_Hystrix之全局服务降级DefaultProperties 57_Hystri ...
- Spring Cloud 学习笔记(2 3)
Spring Cloud 学习笔记(1 / 3) Spring Cloud 学习笔记(3 / 3) - - - 56_Hystrix之全局服务降级DefaultProperties 57_Hystri ...
- Spring Cloud 学习笔记(1 / 3)
Spring Cloud 学习笔记(2 / 3) Spring Cloud 学习笔记(3 / 3) - - - 01_前言闲聊和课程说明 02_零基础微服务架构理论入门 03_第二季Boot和Clou ...
最新文章
- java并行任务dispatch_Java模拟 双分派Double Dispatch
- Missing message for key xxx in bundle (default bundle) for locale zh_CN
- Java设计模式(五):单例设计模式
- 阿里云发布 Spring Boot 新脚手架,真香
- 超详细的HTTP面试题
- c语言 宏定义 去除宏定义_如何检查是否在C中定义了宏?
- pg_lightool-postgres数据分布查看工具
- pmp 第六版 模拟卷5错题整理
- 学习通网页版无法粘贴至提交答案框的解决方法
- 机器视觉——光源选型
- 嵌入式C语言数据类型
- go-micro服务报错:wsasend: An existing connection was forcibly closed by the remote host
- Android百度地图+OSS图片拍照上传+导航+idea
- 华中科技大学计算机王凯,苗蕾-环境科学与工程学院
- opencv cv2.inpaint()的代码与理论
- linux设置用户的执行权限,Linux下ACL权限控制以及用sudo设置用户对命令的执行权限...
- 微信公众平台开发(二) 微信公众平台示例代码分析
- 人工智能是怎样辅助安全自动化、分析处理和响应的?
- Stress命令Linux性能测试,压力测试工具(Centos演示)
- java对图片的各种操作(压缩、加水印(文字或图片)、旋转)
热门文章
- c语言双精度百分号,C语言输出百分号%的方法和示例
- php 权限规范,项目人员权限验证
- 浏览器复制网页链接到微信,显示却只有网页title解决
- [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【二】
- Interlocked..::.Add 方法
- js网页顶部线性页面加载进度条,jquery头部线性进度条总结
- Multimedia (MP3, MPEG-4, AVI, DiVX, etc.) support in Ubuntu 12.04 (Precise)
- Python is同一性运算符和==相等运算符区别
- Pandas列小数转化为百分数
- AAAI-19录用论文清单