Spring.net 控制反转(IoC)容器_(收集)
1.首先了解两个接口.
IObjectFactory接口和IApplicationContext接口:他两个称为“容器”或“IOC容器”。
Spring.net框架的核心原则是非侵入性。
IObjectFactory接口是初始化、配置及管理对象的实际容器。
IObjectFactory全限定名为Spring.Objects.Factory.IObjectFactory,IObjectFactory接口有多个实现,其中最
常用的是Spring.Objects.Factory.XML.XmlObjectFactory。
2.对象定义的XML文件
在app.config或是web.config中加入
<spring>
注意:context的type属性是可以省略的。
<context type="Spring.Context.Support.XmlAppliationContext",Spring.Core"/>
<resource uri=file://objects.xml//>
</spring>
3.spring和context的顺序是有限制的,在Spring.net框架里已经将“spring/context”作为字符串常量定义在了AbstractApplicationContext类中以来表示上下文的接点名称。可通过:
IApplicationContext context=ContextRegistry.GetContext();来获取接点值,这里要注意一点。在使用他的时候必须要使配置文件中的<spring>接点起作用,这样就得必须在.NET的配置文件<configSections>节点下注册类Spring.Context.Support.ContextHandler,它让ContextRegistry类可用来初始化应用程序上下文,它实现在FCL的IConfigurationSectionHandler接口
3.XML对象定义可在<objects>节点注册
<section name="objects" type="Spring.Context.Support.DefultSectionHandler,Spring.Core">
4.Spring.net的IOC容器的简单实例----用简单三层来实现
光说这么多没用,我门还是来点实际的,看看下面的这个简单实例:
一.先建立项目随后添加引用Spring.Core程序集。
二.引用System.Configuration----需要用到ConfigurationManager类的方法。
三.配置.NET配置文件----具体配置如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<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"/>
</context>
<objects>
<!--这的配置根据实际的程序来的,UsersCompontents是程序集Spring.Demo.Compontext下的一个类-->
<object name="Users"
type="Spring.Demo.Compontext.UsersCompontents,Spring.Demo.Compontent">
</object>
</objects>
</spring>
</configuration>
四.建立好项目的实体类和接口以及实现借口。
下面是实例程序的结构图:Model(实体层),Service(接口),Compontent(实现接口的业务逻辑),SimpleTest(测试)
五.首先看看实体层的定义,我相信代码大家都看得懂就不多说了,直接贴上来。
using System;
using System.Collections.Generic;
using System.Text;
namespace Spring.Demo.Model
{
/// <summary>
/// 用户类
/// </summary>
public class Users
{
/// <summary>
/// 编号
/// </summary>
private int _oid;
public int Oid
{
get { return _oid; }
set { _oid = value; }
}
/// <summary>
/// 姓名
/// </summary>
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
/// <summary>
/// 性别
/// </summary>
private string _sex;
public string Sex
{
get { return _sex; }
set { _sex = value; }
}
/// <summary>
/// 年龄
/// </summary>
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
}
}
六.在看接口的定义
using System;
七.实现接口方法的逻辑
using System.Collections.Generic;
using System.Text;
namespace Spring.Demo.Service
{
public interface IUsers
{
/// <summary>
/// 返回用户的详细信息的方法
/// </summary>
/// <returns></returns>
string GetUserInfo();
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Demo.Service;
using Spring.Demo.Model;
namespace Spring.Demo.Compontext
{
public class UsersCompontents:IUsers
{
public UsersCompontents()
{ }
#region 获取用户信息
public string GetUserInfo()
{
Users user = new Users();
user.Oid = 1;
user.Name = "Beniao";
user.Sex = "Boy";
user.Age = 25;
return string.Format("编号:{0}--->姓名:{1}--->性别:{2}--->年龄:{3}",
user.Oid,
user.Name,
user.Sex,
user.Age);
}
#endregion
}
}
八.通过Spring.net的IOC容器IApplicationContext从config文件中取得程序集信息和调用方法实现控制反转
//从config文件中取得程序集信息
IApplicationContext context = ConfigurationManager.GetSection("spring/context")
as IApplicationContext;
//调用方法
//Users为config文件里的配置节
//<object name="Users"
// type="Spring.Demo.Compontext.UsersCompontents,Spring.Demo.Compontent">
//</object>
IUsers user = context.GetObject("Users") as IUsers;
Console.WriteLine(user.GetUserInfo());
Console.Read();
运行结果如下:
关于Spring.net的IOC容器就简单介绍在这里了,我也是刚学Spring.net,文章里难免会出现错误,目前
Spring.net的人气太低了,希望对这有兴趣的朋友多多探讨,更希望这方面的高手能多指教。如文章中发现
错误希望大家留言提出,我门大家一起学习,改进。
本例的代码
Spring.net的IOC容器例子Demo
转载于:https://www.cnblogs.com/wangjei155/archive/2009/06/09/1499568.html
Spring.net 控制反转(IoC)容器_(收集)相关推荐
- java-12:spring MVC - 控制反转IOC,依赖注入DI
学习spring框架之前,先理解几个概念: 1.第一部分:依赖倒置原则 2.第二部分:控制反转,控制反转容器(实例) 3.第三部分:控制反转,控制反转容器(全面理解,面试题) 综合性理解:控制反转(I ...
- Spring中控制反转IoC理论推导
Spring中的IoC是一种思想.所谓控制反转,也就是从创建对象的主动权在程序员手中,到创建对象的主动权在用户手中.控制反转官方定义是一种通过描述(XML或注解)并通过第三方生产或获取特定对象的方式, ...
- Spring的控制反转与依赖注入
学习过Spring的都知道Spring有三大核心的概念,分别是控制反转(IOC).依赖注入(DI)和面向切面编程(AOP).今天就来聊聊我对控制反转和依赖注入的了解,至于面向切面编程放到后面讲解. 一 ...
- 浅析Spring——控制反转IoC
目录 1. IoC理论推导 2. 什么是IoC? 3. 引入DI 4. IoC容器 5. 注入对象的四种方法 1.基于接口 2.基于setter 3.基于构造函数 4.基于注解 6. 两种IoC实现方 ...
- Spring的控制反转(IOC)和依赖注入(DI)具体解释
Spring的控制反转(IOC)和依赖注入(DI)具体解释 首先介绍下(IOC)控制反转: 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制器就有应 ...
- ioc控制反转_深入理解依赖注入(DI)和控制反转(IOC)
转载本文务必须注明出处.微信号(Yemeir_com).以及添加原文链接. 为什么要使用依赖注入 使用依赖注入(DI)可以使控制者与抽象实现者松耦合,便于单元测试.通过控制反转(IOC)的设计原理来减 ...
- 控制反转IOC与依赖注入DI
为什么80%的码农都做不了架构师?>>> 1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最 ...
- 控制反转(IoC)与依赖注入(DI)详解
文章目录 什么是控制反转(IoC) 控制反转(IoC)有什么作用 控制反转(IoC)是怎么分类的 依赖注入 接口注入 Setter方法注入 构造器注入 依赖查找 上下文依赖查找(Contextuali ...
- Spring是什么?IoC容器的理解
1. Spring是什么? 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架)⽤⼀句话概括 Spring:Spring 是包含了众多⼯具⽅法的 IoC 容器. ...
- Spring 的控制反转/依赖注入
第一章 Spring 的控制反转/依赖注入 回顾 增删改查. 课前测: 本章内容 spring:春天 IOC:将创建对象的权力交给 spring 核心容器去控制.工厂模式 BeanFactory: 懒 ...
最新文章
- ANSI C中的sizeof详解
- Vue + Spring Boot 项目实战(三):使用IntelliJ IDEA快速生成 Vue.js 项目
- centos查看yum包所有版本(查看包版本)
- java jar包与配置文件的写法
- pandas 作图 统计_pandas数据作图方法
- 第P题 扔盘子(双重循环就行) 详解=====有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度
- SharePoint 2010 BDC Model项目部署出错:“The default web application could not be determined.”...
- linux文件名变量,文件名通配符、变量以及管道知识点的总结
- Elasticsearch2.4.X 搜索引擎框架 安装配置
- 消费滚动滴log日志文件(flume监听,kafka消费,zookeeper协同)
- linux tar 绝对路径,tar打包使用绝对路径详解
- IBM ServerGuide引导盘全系列下载网址
- 【今年年会,你中奖了吗?】在线抽奖活动中如何实现中奖概率的自适应调整...
- zblog怎么定位html代码,zblog模板修改常用调用标签代码
- VHDL串口通信 在FPGA开发板上测试 并解决没有识别到下载接口USB_Blaster(No Hardware问题)
- java记忆翻牌_html5记忆翻牌游戏
- mybatis plus 出现 Invalid bound statement (not found)
- N沟道的Vgs是正的,P沟道的Vgs是负的
- PDF文件压缩和优化的原理是什么?看了这篇C#案例实践就知道了
- 关于p操作和v操作的理解
热门文章
- 计算机图形学完整笔记(二):光栅图形学算法
- 数位DP算法概述及习题
- 【POJ1958】【典型递推问题】汉诺塔问题
- 蓝队应对攻击的常用策略三
- Raki的读paper小记:How to Fine-Tune BERT for Text Classification?
- 242.有效的字母异位词(力扣leetcode) 博主可答疑该问题
- 445.两数相加II(力扣leetcode) 博主可答疑该问题
- linux mysql开发_Linux下MySQL数据库开发技术
- HADOOP高可用机制
- Ubuntu下安装php7.1的gd,mysql,pdo_mysql扩展库