Spring.net Ioc 依赖注入

控制反转

(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。 控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。

Spring.NET

为建立企业级应用提供了一套轻量级的解决方案。通过Spring.NET,我们可以用统一且透明的方式来配置应用程序。Spring.NET的重点是为中间层提供声明式事务管理,以及一个功能齐全的ASP.NET扩展框架。Spring.NET是非侵入式的,代码对框架本身不会产生任何依赖。

一、控制台程序尝鲜

1.新建解决方案,DemoNuget(控制台程序)、IService(类库)、Service(类库),在分别新建一个接口和2个类。如下

namespace IService
{
    public interface IBookService
    {
        string ISBN { get; set; }
    }
}
namespace Service
{
  public class BookService : IBookService
  {
    public string ISBN { get; set; }
  }
}

2.DemoNuget添加引用 Service和IService(注:真实项目中,DemoNuget不应该引用Service,这里添加了是为了程序生成时,自动将程序集“Service”复制到程序运行目录下,以免Spring.net无法加载程序集的问题),然后,继续对DemoNuget右键“管理Nuget程序包”

我这里用的是最新的2.0.1版本,安装后,会添加2个引用,分别是 “Spring.Core”和“Common.Logging”,前者是Spring.net的核心,后者是日志记录组件,所以也可以手动引入这两个类库。

3.打开DemoNuget下的“Appconfig”文件。内容类似为这样的(不一样也没关系):

<?xml version="1.0" encoding="utf-8" ?>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

然后将下面一段代码复制到“Appconfig”文件中

  <!--Spring.net Ioc start-->
  <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"/>
      <resource uri="file://IServices.xml"/>
    </context>
    <objects xmlns="http://www.springframework.net"></objects>
  </spring>
  <!--Spring.net Ioc end-->

最终结果是这样的

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3   <!--Spring.net Ioc start-->
 4   <configSections>
 5     <sectionGroup name="spring">
 6       <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
 7       <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
 8     </sectionGroup>
 9   </configSections>
10   <spring>
11     <context>
12       <resource uri="config://spring/objects"/>
13       <resource uri="file://IServices.xml"/>
14     </context>
15     <objects xmlns="http://www.springframework.net"></objects>
16   </spring>
17   <!--Spring.net Ioc end-->
18
19     <startup>
20         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
21     </startup>
22 </configuration>

其中,第13行代码是加载一个“IServices.xml”的xml文件,所以下一步在DemoNuget中新建一个“IServices.xml”的xml文件,内容如下

新建完成后,对着“IServices.xml”右键属性,选择“始终复制”,目的与前面引用“Service”道理是一样的。

4.开始写代码吧,

 1 namespace DemoNuget
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             IApplicationContext ctx = ContextRegistry.GetContext();
 8             IBookService ibook = (IBookService)ctx.GetObject("ibookService");
 9             Console.WriteLine(ibook.ISBN);
10
11             Console.Read();
12         }
13     }
14 }

对照着前面一张图,自行脑补吧。运行,会出现如下结果:

时间: 2024-10-15 16:28:34

Spring.net Ioc 依赖注入的相关文章

关于Spring IOC (依赖注入)你需要知道的一切

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/54561302 出自[zejian的博客] <Spring入门经典>这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初学者也适合spring有过开发经验的工程师,前者可用于全面了解Spring IOC的知识点,后者且

IoC 依赖注入、以及在Spring中的实现

资源来自网络: 去年火得不行的Spring框架,一般的书籍都会从IoC和AOP开始介绍起,这个IoC概念,个人感觉资料里都写得让人看得有些痛苦,所谓IoC,就是控制反转(Inversion of Control)的缩写,这个大家都知道,但是个人觉得理解这个概念,最好应该从依赖(dependence)开始讲起,以下观点由此展开: UML中依赖关系如A依赖于B,就是A中有对方的引用;也就是说依赖就是引用:A依赖于B,就是A使用B来做事情. 所谓依赖,举个例子说明,一个类Person,另一个类Car,

Spring IoC 依赖注入(二)源码分析

目录 Spring IoC 依赖注入(二)源码分析 1. 依赖注入口 - populateBean 1.1 doCreateBean 1.2 populateBean 2. 手动注入 2.1 相关的类说明 2.2 applyPropertyValues 2.3 BeanDefinitionValueResolver 2.4 依赖检查 2. 自动注入 2.1 那些字段会自动注入 2.2 名称注入 2.3 类型注入 Spring IoC 依赖注入(二)源码分析 本章主要分析 Spring IoC 依

spring四种依赖注入方式

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. spring有多种

spring 四种依赖注入方式以及注解注入方式

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化, 而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员, 而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. spring有多种依赖注

spring四种依赖注入方式 (set,构造器,工厂,注解 )

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. spring有多种

Spring-DI控制反转和IOC依赖注入

Spring-DI控制反转和IOC依赖注入 DI控制反转实例 IDEAJ自动导入Spring框架 创建UserDao.java接口 public interface UserDao { public void say(); } 创建UserDaoImpl.java继承UserDao.java并重写say()方法 public class UserDaoImpl implements UserDao{ @Override public void say() { System.out.println

spring学习笔记-依赖注入

学习过程访问的地址,按顺序理解: [email protected]注解与自动装配 spring四种依赖注入方式 Spring注解注入 <context:component-scan>使用说明 详细:Spring零配置通过注解实现Bean依赖注入总结

图解IoC 依赖注入

图解IoC 依赖注入