Spring.NET依赖注入(二) - 对象的注入

简介: 1. 抽象注入接口public interface IDeviceWriter    {        void saveToDevice();    } 2. 接口的具体实现  实现1public class FloppyWriter : IDeviceWriter    ...

1. 抽象注入接口

public  interface IDeviceWriter
    {
         void saveToDevice();
    }

 

2. 接口的具体实现

  实现1

public  class FloppyWriter : IDeviceWriter
    {
         public  void saveToDevice() 
        {
            Console.WriteLine( " 储存至软盘… ");
        }
    }

 

  实现2

public  class UsbDiskWriter : IDeviceWriter
    {
         public  void saveToDevice() 
        {
            Console.WriteLine( " 储存至移动硬盘… ");
        }
    }

 

3. 需要注入的业务对象

public  class MemoryDevice
    {
         public IDeviceWriter DeviceWriter {  getset; }

         public  void Save()
        {
             if (DeviceWriter ==  null)
            {
                 throw  new Exception( " 需要设备... ");
            }

            DeviceWriter.saveToDevice();
        }
    }

 

4. 业务调用组件

public  class DeviceComponent
    {
         public  static  void SaveDevice()
        {
             try
            {
                 // 从config文件中取得程序集信息
                IApplicationContext context = ConfigurationManager.GetSection( " spring/context "as IApplicationContext;

                 // 调用方法
                MemoryDevice device = context.GetObject( " algDevice "as MemoryDevice;
                device.Save();
            }
             catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }

 

5. 客户端调用

class SpringDeviceTest : ITestCase
    {
         public  void Run()
        {
            DeviceComponent.SaveDevice();

            Console.Read();
        }
    }

 

6. 配置文件

< 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 >
     ...
      < object  id ="algFloppy"  type ="CsharpTrainer.Strategy.Device.FloppyWriter, CsharpTrainer.Strategy"   />
       < object  id ="algUsb"  type ="CsharpTrainer.Strategy.Device.UsbDiskWriter, CsharpTrainer.Strategy"   />
       < object  id ="algDevice"  type ="CsharpTrainer.Strategy.Device.MemoryDevice, CsharpTrainer.Strategy" >
         < property  name ="DeviceWriter"  ref ="algFloppy"   />
         <!-- <property name="DeviceWriter" ref="algUsb" /> -->
       </ object >
     </ objects >
   </ spring >
  ...
</ configuration >

 

7. 运行结果

  储存至软盘…

 

目录
相关文章
|
4月前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
95 5
|
6月前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
426 3
|
6月前
|
Java 测试技术 程序员
为什么Spring不推荐@Autowired用于字段注入?
作为Java程序员,Spring框架在日常开发中使用频繁,其依赖注入机制带来了极大的便利。然而,尽管@Autowired注解简化了依赖注入,Spring官方却不推荐在字段上使用它。本文将探讨字段注入的现状及其存在的问题,如难以进行单元测试、违反单一职责原则及易引发NPE等,并介绍为何Spring推荐构造器注入,包括增强代码可读性和维护性、方便单元测试以及避免NPE等问题。通过示例代码展示如何将字段注入重构为构造器注入,提高代码质量。
165 1
|
4月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
4月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
112 12
|
4月前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
108 12
|
4月前
|
Java Spring
一键注入 Spring 成员变量,顺序编程
介绍了一款针对Spring框架开发的插件,旨在解决开发中频繁滚动查找成员变量注入位置的问题。通过一键操作(如Ctrl+1),该插件可自动在类顶部添加`@Autowired`注解及其成员变量声明,同时保持光标位置不变,有效提升开发效率和代码编写流畅度。适用于IntelliJ IDEA 2023及以上版本。
一键注入 Spring 成员变量,顺序编程
|
5月前
|
开发框架 .NET 程序员
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
Autofac 是一个轻量级的依赖注入框架,专门为 .NET 应用程序量身定做,它就像是你代码中的 "魔法师",用它来管理对象的生命周期,让你的代码更加模块化、易于测试和维护
150 4
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
|
4月前
|
Java 数据库 数据安全/隐私保护
轻松掌握Spring依赖注入:打造你的登录验证系统
本文以轻松活泼的风格,带领读者走进Spring框架中的依赖注入和登录验证的世界。通过详细的步骤和代码示例,我们从DAO层的创建到Service层的实现,再到Spring配置文件的编写,最后通过测试类验证功能,一步步构建了一个简单的登录验证系统。文章不仅提供了实用的技术指导,还以口语化和生动的语言,让学习变得不再枯燥。
87 2
|
4月前
|
XML 安全 Java
Spring Boot中使用MapStruct进行对象映射
本文介绍如何在Spring Boot项目中使用MapStruct进行对象映射,探讨其性能高效、类型安全及易于集成等优势,并详细说明添加MapStruct依赖的步骤。
120 0

热门文章

最新文章