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又有什么关系 ...
随机推荐
- python的列表使用
1.什么是列表 列表是由一系列按特定顺序排列的元素,元素之间可以没有任何关系:可以创建空列表,也可以将任何东西添加进列表. 列表用 [ ] 表示: cars = ['golf', 'magotan', ...
- Gin 框架 - 安装和路由配置
目录 概述 Gin 安装 路由配置 推荐阅读 概述 看下 Gin 框架的官方介绍: Gin 是一个用 Go (Golang) 编写的 web 框架. 它是一个类似于 martini 但拥有更好性能的 ...
- IQueryable.Where中动态生成多个并或筛选Expression<Func<T, bool>>
直接上图
- Vmware centos7无法联网的问题解决
VMware三种网络连接方式的区别 : 1) bridge : 默认使用VMnet0,不提供DHCP服务 在桥接模式下,虚拟机和宿主计算机处于同等地位,虚拟机就像是一台真实主机一样存在于局域网中.因此 ...
- 快速掌握mongoDB(五)——通过mongofiles和C#驱动操作GridFS
1 GridFS简介 当前Bson能存储的最大尺寸是16M,我们想把大于16M的文件存入mongoDB中怎么办呢?mongoDB提供的GridFS就是专门做这个的.使用GridFS存储大文件时,文件被 ...
- Android 隐藏软键盘功能的实现
Activity context = (Activity) mContext; final View v = context.getWindow().peekDecorView(); if (v != ...
- .NET Core CSharp初级篇 类的生命历程
.NET Core CSharp初级篇 1-7 本节内容为类的生命周期 引言 对象究竟是一个什么东西?对于许多初学者而言,对象都是一个非常抽象的知识点.如果非要用一句话描述,我觉得"万物皆对 ...
- Linux学习(一)--VMware下Linux安装和配置
本片随便将给大家讲述linux在VM虚拟机上安装及终端的安装和配置 一.Linux介绍 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线 ...
- javaScript操作DOM深入理解
做为一个web前端,处理和了解浏览器差异一个重要问题.下面将介绍本人在工作中的一些笔记总结,先介绍没有使用js库的情况. 1. setAttribute方法设置元素类名 : 在jQuery中,直接使用 ...
- 使用log4j进行日志管理
17.1.Log4j简介 作用: 1. 跟踪代码的运行轨迹. 2. 输出调试信息. 三大组成: 1. Logger类-生成日志. 2. Appender类-定义日志输出的目的地. 3. Layou ...