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入门相关推荐

  1. Spring基础知识及入门

    ---恢复内容开始--- 1 spring框架概述 1.1 什么是spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson  ...

  2. python ioc框架_轻松理解 Spring 中的 IOC

    Spring 简介 Spring 是一个开源的轻量级的企业级框架,其核心是反转控制 (IoC) 和面向切面 (AOP) 的容器框架.我们可以把 Spring 看成是对象的容器,容器中可以包含很多对象, ...

  3. Spring Cloud 极简入门

    专栏亮点 优势 内容通俗易懂,更适合初学者. 重实操性,专栏包含一个完整的项目实战,通过开发项目掌握技术的实际应用. 案例理论结合,专栏以实际案例为主,更有利于上手应用. 专栏特色 从零讲起,轻松入门 ...

  4. Spring入门第一讲——Spring框架的快速入门

    Spring的概述 什么是Spring? 我们可以从度娘上看到这样有关Spring的介绍: 说得更加详细一点,Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架, ...

  5. Spring Cache,从入门到真香

    点击↑上方↑蓝色"编了个程"关注我~ 每周至少一篇原创文章 这是本公众号的第 33 篇原创文章 荒腔走板 西湖 这是前两天我去西湖游玩的时候,玩到了夕阳西下的时间.于是我两就坐在西 ...

  6. spring学习笔记 -- day02 spring基础、IOC控制反转

    一:srping的介绍 1.spring的体系结构 2.spring资源 a.spring-framework-4.2.4.RELEASE:Spring Framework的官方发行包 b.sprin ...

  7. 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)

    用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心. 依赖注入(DI) ...

  8. Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

    这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: Spring中的 ...

  9. Spring学习(1)——快速入门

    Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...

最新文章

  1. SuperSocket .net服务框架
  2. R创建分类变量(categorical variable)
  3. Heap Dump分析工具ha456.jar
  4. 模型融合之stacking方法
  5. Python 一键导出微信阅读记录和笔记,666!
  6. 转载: 快速理解Docker - 容器级虚拟化解决方案
  7. js中实现base64加密、解密
  8. Tensorflow Summary: 查看Tensorflow Model pb格式模型的信息
  9. session的removeattribute移除一个不存在的属性会怎么用_公认峡谷机制最完美,对线几乎无解,夏侯惇高端局为何火不起来?...
  10. 内存分配(malloc()和free())
  11. 阿里云移动端播放器高级功能---画面控制
  12. 文字处理技术:完成了对表格的布局处理
  13. 如何用MAYA 制作人物动画 使人物动作更加真实流畅
  14. 黑马程序员——一些常用类的代码实践
  15. C语言程序设计孙家啸第一版,广东(年4月自考各专业课程使用教材.doc
  16. 如何成为一个具有批判性思维的人?
  17. 无法装载DLL Microsoft原因: 126(找不到指定的模块)
  18. 身份证、组织机构代码及营业执照号校验函数
  19. 实战PyQt5: 141-QChart图表之箱形图
  20. win10+django开发项目day03.02

热门文章

  1. centos7 nginx配置php7,centos7下yum安装nginx和php7和php-fpm
  2. 当 RocketMQ 遇上 Serverless,会碰撞出怎样的火花?
  3. 修改服务器劫包,APP游戏TCP包被劫持篡改的一些解决方案
  4. 如何能在git bash中使用mvn命令_使用Github Actions完成CI/CD工作
  5. android audiotrack权限,Android中AudioRecord和AudioTrack的使用注意
  6. python一些常用方法_python常用的一些技巧
  7. c语言 proteus 延迟2秒_周周练 | 专升本C语言
  8. chrome 获取硬件信息_在tinycolinux上安装chrome
  9. iif能用到mysql中吗_请问ORACLE中IIF如何用
  10. thinkphp mysql批量入库_ThinkPHP3.2框架使用addAll()批量插入数据的方法