Spring.Net 依赖注入
一、Spring.Net概念
编程模型(Ioc,DI方式)
IoC:控制反转
原来创建对象的权利由程序来控制就是new实例,IoC就是改由容器来创建,相当于一个工厂,
DI:依赖注入
没有IoC就没有DI,DI:容器在创建对象时,通过读取配置文件(一般是xml)设置的默认值,使其在创建时就拥有了某些注入的值。
什么是Spring.net?
spring是一个依赖注入的设计框架,使项目层与层之间解耦达到更灵活的使用。Spring.net是Spring中支持.net开发的框架。
Spring.net是一个企业级的重型依赖注入框架应用框架。Spring.Net会让应用性能下降,不过它的灵活的优点远大于缺点。适合用来做企业的oa系统之类的。
Spring.net能够干什么?
在core(核心)和AOP(模型支持,属性反转,接受注入)之上支持:
1, MSQ(消息队列)
2, MVC
3, WEB
4, Quartz.net
Spring.net能做到的不止如此。
二、DEMO示例
新建一个控制台程序,程序比较简单,直接上代码
老方法
Program.cs
using System; namespace Spring.Net.DEMO
{
class Program
{
static void Main(string[] args)
{
IUserInfoDal UserInfo = new UserInfoDal();
UserInfo.Show();
Console.ReadKey();
}
}
}
IUserInfoDal.cs
using System;
using System.Collections.Generic;
using System.Text; namespace Spring.Net.DEMO
{
public interface IUserInfoDal
{
void Show();
}
}
UserInfoDal.cs
using System;
using System.Collections.Generic;
using System.Text; namespace Spring.Net.DEMO
{
public class UserInfoDal : IUserInfoDal
{
public void Show()
{
Console.WriteLine("越来越帅");
}
}
}
效果


Spring.Net注入方式
第一步去官网下载Spring.Net程序集
地址:http://www.springframework.net/download.html
链接:https://pan.baidu.com/s/1cLjAi0lS_iy1tKRMJIBw0w
提取码:tn3s
也可以到我百度云盘上下载,包含中文API
第二步:XXX\XXX\Spring.NET-1.3.1\Spring.NET\bin\net\4.0\release下找到 Common.Logging.dll和Spring.Core.dll这两个dll复制到项目中添加引用

第三步:引入命名空间
using Spring.Context;
using Spring.Context.Support;
第四步(app.config文件):
<?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>
<!--Spring.Net对象容器的配置(下面这句话表示:容器里的对象,在当前配置文件(Web.config)的spring节点下的objects节点中配置对象)-->
<resource uri="config://spring/objects"/>
</context>
<!--objects:配置的容器里面的对象-->
<objects xmlns="http://www.springframework.net">
<description>An example that demonstrates simple IoC features.</description>
<!--name起个名字,一般为类的名称;type:左边:命名空间+类名,右边:命名空间-->
<object name="IUserInfo" type="SpringDemo.UserInfo, SpringDemo"> </object>
</objects>
</spring>
</configuration>
第五步:创建类与接口
IUserInfoDal.cs(接口)
using System;
using System.Collections.Generic;
using System.Text; namespace DEMO
{
public interface IUserInfoDal
{
string Show();
}
}
UserInfoDal.cs(类)
using System;
using System.Collections.Generic;
using System.Text; namespace DEMO
{
public class UserInfoDal : IUserInfoDal
{
public string Show()
{
return "越来越帅!~";
}
}
}
第六步:实现
using Spring.Context;
using Spring.Context.Support;
using System;
using System.Windows.Forms; namespace DEMO
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Button1_Click(object sender, EventArgs e)
{
//这句代码让spring.net读取配置文件,自动完成注入和反转操作,创建实例UserInfoDalInstance
IApplicationContext ctx = ContextRegistry.GetContext();
//我们到所创建的上下文里面拿到我们刚才创建的实例IUserInfo
IUserInfoDal dll = ctx.GetObject("IUserInfo") as UserInfoDal;
string res = dll.Show();
}
}
}
第七步:搞定!!!

程序中并没有new实例对象,但是已经通过配置文件,正确的实例化了,依赖注入成功。
补充:
属性注入(UserInfoDal.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Demo
{
public class UserInfoDal : IUserInfoDal
{
public string Name
{
get;set;
} public string Show()
{
return Name+"越来越帅!~";
}
}
}
配置文件(app.config):
<?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>
<!--Spring.Net对象容器的配置(下面这句话表示:容器里的对象,在当前配置文件(Web.config)的spring节点下的objects节点中配置对象)-->
<resource uri="config://spring/objects"/>
<resource uri="file://Dals.xml"/>
</context>
<!--objects:配置的容器里面的对象-->
<objects xmlns="http://www.springframework.net">
<description>An example that demonstrates simple IoC features.</description>
<!--name起个名字,一般为类的名称;type:左边:命名空间+类名,右边:命名空间-->
<object name="IUserInfo" type="Demo.UserInfoDal, Demo">
<!--属性注入,name:属性名称;value:属性的值-->
<property name="Name" value="alex"/>
</object>
</objects>
</spring>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>

Spring.Net 依赖注入的更多相关文章
- (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)
Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring ...
- Spring的依赖注入(DI)三种方式
Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...
- spring的依赖注入的最常见的两种方法
package com.lsz.spring.action; public class User { /** * set注入 */ private String username; public vo ...
- 一步一步深入spring(3)--spring的依赖注入方式
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,sprin ...
- spring的依赖注入是什么意思
最近学习spring框架,对依赖注入有些模糊,遂上网翻阅资料,做了下列总结,原博客为CSDN 南夏的 spring的依赖注入是什么意思,侵删! Spring 能有效地组织J2EE应用各层的对象.不管是 ...
- SpringBoot系列: 理解 Spring 的依赖注入(一)
==============================Spring 的依赖注入==============================对于 Spring 程序, Spring 框架为我们提供 ...
- Spring.NET依赖注入框架学习--实例化容器常用方法
Spring.NET依赖注入框架学习---实例化容器常用方法 本篇学习实例化Spring.NET容器的俩种方式 1.通过XmlObjectFactory创建一个Spring.NET容器 IResour ...
- Spring.NET依赖注入框架学习--简单对象注入
Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...
- Spring.NET依赖注入框架学习--简介
Spring.NET依赖注入框架学习--Spring.NET简介 概述 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入. ...
- Spring.NET依赖注入框架学习--入门
Spring.NET依赖注入框架学习--入门 在学些Spring.net框架之前,有必要先脑补一点知识,比如什么是依赖注入?IOC又是什么?控制反转又是什么意思?它们与Spring.net又有什么关系 ...
随机推荐
- python3+pyQt5+QtDesignner实现窗口化猜数字游戏
描述:使用QtDesignner设计界面,pyQt5+python3实现主体方法制作的猜数字游戏. 游戏规则:先选择游戏等级:初级.中级.高级.魔鬼级,选择完游戏等级后点击“确定”,然后后台会自动生成 ...
- 腾讯云tomcat问题
Ubuntu启动特别慢 1.在$JAVA_HOME/jre/lib/security/java.security中,把securerandom.source=file:/dev/urandom替换成s ...
- Bzoj 2013 [Ceoi2010] A huge tower 题解
2013: [Ceoi2010]A huge tower Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 471 Solved: 321[Submit ...
- linux 安装weblogic12.1.3.0步骤
此过程为jar包安装~ 需注意:fmw_12.1.3.0.0_wls.jar 需要jdk1.7.0_15以上的版本 1.安装JDK(若已装可跳过) (1)Oracle官网下载jdk linux ...
- [记录]FIO测试磁盘iops性能
FIO测试磁盘iops性能 1.SATA和SAS盘原生IOPS如下: 2.RAID磁盘阵列对应的写惩罚级别: 3.计算功能性IOPS公式如下: 功能性 IOPS=(((总原生 IOPS×写 %))/( ...
- NetCore 依赖注入之服务之间的依赖关系
简单介绍,直接官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspn ...
- getlasterror() 输出错误信息,
得自http://bbs.csdn.net/topics/390416234 LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE ...
- 从0系统学Android--1.3创建你的第一个 Android 项目
1.3 创建你的第一个 Android 项目 环境搭建完成后,我们就可以写下我们的第一个项目了. 1.3.1 创建 HelloWorld 项目 在 Android Studio 的欢迎页面点击 Sta ...
- 鸽巢原理及其扩展——Ramsey定理
第一部分:鸽巢原理 咕咕咕!!! 然鹅大家还是最熟悉我→ a数组:but 我也很重要 $:我好像也出现不少次 以上纯属灌水 文章简叙:鸽巢原理对初赛时的问题求解以及复赛的数论题目都有启发意义.直接的初 ...
- 关于Calendar的一些用法总结
import java.util.Calendar; import java.security.KeyStore.TrustedCertificateEntry; import java.text.D ...