Spring.Net的IOC入门
1.构造器注入
namespace Spring.Net {class Program{//构造器注入static void Main(string[] args){IApplicationContext ctx = ContextRegistry.GetContext();//通过容器创建对象IUser _user = ctx.GetObject("User") as IUser;_user.Show();Console.ReadKey();}}public interface IUser{string Name { get; set; }void Show();}public class User : IUser{public string Name { get; set; }public void Show(){Console.WriteLine("我是User的Show方法");}} }
<?xml version="1.0" encoding="utf-8" ?> <configuration><!--一定要在紧跟着configuration下面添加--><configSections><!--跟下面Spring.Net节点配置是一一对应关系--><sectionGroup name="spring"><section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/><section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /></sectionGroup></configSections><spring><context><resource uri="config://spring/objects"></resource></context> <objects><!--name 必须要唯一的,type=类的全名称,所在的程序集--><object name="User" type="Spring.Net.User, Spring.Net"> </object> </objects></spring><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup> </configuration>
2.属性及构造器注入
namespace Spring.Net {class Program{static void Main(string[] args){IApplicationContext ctx = ContextRegistry.GetContext();//通过容器创建对象IUser _user = ctx.GetObject("User") as IUser;IPeople _people = ctx.GetObject("People") as IPeople;Test _test = ctx.GetObject("Test") as Test;Console.WriteLine(_user.Name);Console.WriteLine(_user.Age);Console.WriteLine("--------------------------------------------");Console.WriteLine(_people.Man.Name);Console.WriteLine(_people.Man.Age);Console.WriteLine("--------------------------------------------");Console.WriteLine(_test.Name);Console.WriteLine(_test.Age);Console.ReadKey();}}public interface IUser{string Name { get; set; }int Age { get; set; }void Show();}public class User : IUser{public string Name { get; set; }public int Age { get; set; }public void Show(){Console.WriteLine("我是User的Show方法");}}public interface IPeople{IUser Man { get; set; }}public class People : IPeople{public IUser Man { get; set; }}public class Test{public string Name{get;set;}public int Age{get;set;}public Test(string name, int age){Name = name;Age = age;}} }
<?xml version="1.0" encoding="utf-8" ?> <configuration><!--一定要在紧跟着configuration下面添加--><configSections><!--跟下面Spring.Net节点配置是一一对应关系--><sectionGroup name="spring"><section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/><section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /></sectionGroup></configSections><spring><context><resource uri="config://spring/objects"></resource></context> <objects><object name="User" type="Spring.Net.User, Spring.Net"><!--01属性注入-值类型--><property name="Name" value="Linq"></property><property name="Age" value="25"></property></object><object name="People" type="Spring.Net.People, Spring.Net"><!--02属性注入-引用类型--><property name="Man" ref="User"></property></object><object name="Test" type="Spring.Net.Test, Spring.Net"><!--03构造函数注入--><constructor-arg name="name" value="config配置"></constructor-arg><constructor-arg name="age" value="25"></constructor-arg></object></objects></spring><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup> </configuration>
3.方法注入
namespace Spring.Net {class Program{static void Main(string[] args){IApplicationContext ctx = ContextRegistry.GetContext(); ObjectFactory dao = (ObjectFactory)ctx.GetObject("objectFactory");//查询方法注入//查询方法注入就利用了这些功能。个人感觉查询方法注入类似抽象工厂,//为之不同的是,可以不用写抽象的实现代码,通过配置文件动态的切换组件。 dao.CreatePersonDao().Save();//事件注入Door door = (Door)ctx.GetObject("door");door.OnOpen("Opening!");Console.WriteLine();Console.Read();}}public abstract class ObjectFactory{//或者可以是一个虚方法 public abstract PersonDao CreatePersonDao();}public class PersonDao{public void Save(){Console.WriteLine("保存数据");}}//先定义一个委托public delegate string OpenHandler(string arg);public class Door{public event OpenHandler OpenTheDoor;public void OnOpen(string arg){//调用事件if (OpenTheDoor != null){Console.WriteLine(OpenTheDoor(arg));}}}public class Men{public string OpenThisDoor(string arg){return "参数是:" + arg;}} }
<?xml version="1.0" encoding="utf-8" ?> <configuration><!--一定要在紧跟着configuration下面添加--><configSections><!--跟下面Spring.Net节点配置是一一对应关系--><sectionGroup name="spring"><section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/><section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /></sectionGroup></configSections><spring><context><resource uri="config://spring/objects"></resource></context> <objects><!--查询方法--><object id="personDao" type="Spring.Net.PersonDao, Spring.Net" singleton="false"/><object id="objectFactory" type="Spring.Net.ObjectFactory, Spring.Net"><lookup-method name="CreatePersonDao" object="personDao"/></object><!--事件注入--><object id="men" type="Spring.Net.Men, Spring.Net"><listener event="OpenTheDoor" method="OpenThisDoor"><ref object="door"/></listener></object><object id="door" type="Spring.Net.Door, Spring.Net" /></objects></spring><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup> </configuration>
转载于:https://www.cnblogs.com/lgxlsm/p/5410944.html
Spring.Net的IOC入门相关推荐
- Spring基础知识及入门
---恢复内容开始--- 1 spring框架概述 1.1 什么是spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson ...
- python ioc框架_轻松理解 Spring 中的 IOC
Spring 简介 Spring 是一个开源的轻量级的企业级框架,其核心是反转控制 (IoC) 和面向切面 (AOP) 的容器框架.我们可以把 Spring 看成是对象的容器,容器中可以包含很多对象, ...
- Spring Cloud 极简入门
专栏亮点 优势 内容通俗易懂,更适合初学者. 重实操性,专栏包含一个完整的项目实战,通过开发项目掌握技术的实际应用. 案例理论结合,专栏以实际案例为主,更有利于上手应用. 专栏特色 从零讲起,轻松入门 ...
- Spring入门第一讲——Spring框架的快速入门
Spring的概述 什么是Spring? 我们可以从度娘上看到这样有关Spring的介绍: 说得更加详细一点,Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架, ...
- Spring Cache,从入门到真香
点击↑上方↑蓝色"编了个程"关注我~ 每周至少一篇原创文章 这是本公众号的第 33 篇原创文章 荒腔走板 西湖 这是前两天我去西湖游玩的时候,玩到了夕阳西下的时间.于是我两就坐在西 ...
- spring学习笔记 -- day02 spring基础、IOC控制反转
一:srping的介绍 1.spring的体系结构 2.spring资源 a.spring-framework-4.2.4.RELEASE:Spring Framework的官方发行包 b.sprin ...
- 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)
用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心. 依赖注入(DI) ...
- Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: Spring中的 ...
- Spring学习(1)——快速入门
Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...
最新文章
- SuperSocket .net服务框架
- R创建分类变量(categorical variable)
- Heap Dump分析工具ha456.jar
- 模型融合之stacking方法
- Python 一键导出微信阅读记录和笔记,666!
- 转载: 快速理解Docker - 容器级虚拟化解决方案
- js中实现base64加密、解密
- Tensorflow Summary: 查看Tensorflow Model pb格式模型的信息
- session的removeattribute移除一个不存在的属性会怎么用_公认峡谷机制最完美,对线几乎无解,夏侯惇高端局为何火不起来?...
- 内存分配(malloc()和free())
- 阿里云移动端播放器高级功能---画面控制
- 文字处理技术:完成了对表格的布局处理
- 如何用MAYA 制作人物动画 使人物动作更加真实流畅
- 黑马程序员——一些常用类的代码实践
- C语言程序设计孙家啸第一版,广东(年4月自考各专业课程使用教材.doc
- 如何成为一个具有批判性思维的人?
- 无法装载DLL Microsoft原因: 126(找不到指定的模块)
- 身份证、组织机构代码及营业执照号校验函数
- 实战PyQt5: 141-QChart图表之箱形图
- win10+django开发项目day03.02
热门文章
- centos7 nginx配置php7,centos7下yum安装nginx和php7和php-fpm
- 当 RocketMQ 遇上 Serverless,会碰撞出怎样的火花?
- 修改服务器劫包,APP游戏TCP包被劫持篡改的一些解决方案
- 如何能在git bash中使用mvn命令_使用Github Actions完成CI/CD工作
- android audiotrack权限,Android中AudioRecord和AudioTrack的使用注意
- python一些常用方法_python常用的一些技巧
- c语言 proteus 延迟2秒_周周练 | 专升本C语言
- chrome 获取硬件信息_在tinycolinux上安装chrome
- iif能用到mysql中吗_请问ORACLE中IIF如何用
- thinkphp mysql批量入库_ThinkPHP3.2框架使用addAll()批量插入数据的方法