Spring.NET依赖注入框架学习---实例化容器常用方法

手写Spring框架核心:从IoC容器到依赖注入的实现原理 控制反转(IoC)是Java企业级开发中的核心设计模式,它通过将对象的创建和依赖管理从代码中剥离,交由容器统一处理,实现了组件间的解耦。其原理基于反射机制,在运行时动态解析类信息、实例化对象并建立依赖关系。这一技术价值在于提升了代码的可维护性和可测试性,使得大型应用架构更加灵活。在Spring框架中,IoC容器与依赖注入(DI)紧密结合,广泛应用于微服务、Web应用等场景。通过自定义注解驱动和类路径扫描,可以构建一个简化的IoC容器,深入理解Bean生命周期管理。本文以手写迷你Spring为例,剖析循环依赖 阅读详情

Spring.NET依赖注入框架学习---实例化容器常用方法

本篇学习实例化Spring.NET容器的俩种方式

1、通过XmlObjectFactory创建一个Spring.NET容器

IResource input = new FileSystemResource ("objects.xml");
IObjectFactory factory = new XmlObjectFactory(input);

这样就可以通过factory的GetObject(“objectName”);获取这个对象

2、通过IApplicationContext创建一个Spring.NET容器

IApplicationContext ctx = ContextRegistry.GetContext();

这样就可以通过IApplicationContext的GetObject(“objectName”);获取这个对象

程序例子

 

例子代码:Person.cs

namespace Spring.NET01
{
    public class Person
    {
        public Person()
        { }
        ~Person()
        { }
        public void print()
        {
            Console.WriteLine("我是一个Person对象");
        }
    }
}

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>
      <!--元数据对象的来源-->
      <resource uri="config://spring/objects"></resource>
    </context>

    <objects xmlns="http://www.springframework.net">
      
      <!--一个person对象-->
      <object id="person1" type="Spring.NET01.Person,Spring.NET01">
        
      </object>
    </objects>

  </spring>
</configuration>

添加objects.xml  其中objects 的属性值必须加上

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.net
        http://www.springframework.net/xsd/spring-objects.xsd">
  <object id="person2" type="Spring.NET01.Person,Spring.NET01">
  </object>
</objects>

测试代码:

 class Program
    {
        static void Main(string[] args)
        {
            //普通对象创建
            Console.WriteLine("--------普通对象创建方法--------");
            Person person = new Person();
            person.print();

            //通过Spring.NET ioc IApplicationContext注入对象
            Console.WriteLine("--------IApplicationContext方法--------");
            IApplicationContext content = ContextRegistry.GetContext();
            Person bennanhai = (Person)content.GetObject("person1");
            bennanhai.print();


            //通过Spring.NET ioc XmlObjectFactory注入对象
            Console.WriteLine("--------XmlObjectFactory方法--------");
            IResource input = new FileSystemResource("objects.xml");
            IObjectFactory factory = new XmlObjectFactory(input);
            Person bennanhai2 = (Person)factory.GetObject("person2");
            bennanhai2.print();
            Console.Read();
        }
    }

运行结果

 

源代码工程下载

 

Spring.NET依赖注入与控制反转实战Demo Spring.NET作为企业级应用开发的重要支撑框架,继承了Java领域中Spring框架的设计理念与核心思想,为.NET平台提供了强大的基础设施支持。其核心优势在于通过控制反转(IoC)和依赖注入(DI)机制,解耦组件之间的硬编码依赖关系,提升代码的可测试性、可维护性和可扩展性。// 示例:典型的依赖注入使用方式// 构造器注入,由容器自动解析依赖该框架不仅提供基础的DI容器,还整合了AOP拦截、声明式事务管理、数据访问抽象等企业级服务,形成统一的技术底座。 阅读详情

相关推荐

Spring.NET框架深度解析与实践指南

Spring.NET的出现是为了向.NET开发者提供一个基于依赖注入和面向切面编程(AOP)的轻量级框架。在这一章中,我们将首先揭开Spring.NET的设计理念,这包括它如何借助IoC(控制反转)原则来实现依赖关系的管理。接着,我们会探讨其核心特性,例如配置简便性、异常处理能力以及高效的性能优化,这些特性是Spring.NET在.NET生态系统中稳占一席之地的关键。我们将通过其与Spring框架的联系,来解释为什么.NET社区的开发者会对其如此青睐。

weixin_42577243的博客 1073

ASP.NET Core — 依赖注入(一)

NET Core 框架下默认提供250个以上的的服务,包括ASP.NET Core MVC、EF Core 等等,当然这些服务很多不会默认就注入到容器中,我们在新建一个项目的时候,不同项目框架的模板会帮我们默认配置好一些最基本的必须的服务,其他的服务我们可以根据自己的需要进行使用。这也是我们在日常开发中可以学习的方式,随着业务增长,需要依赖注入的服务也越来越多,我们可以根据业务模块,通过扩展方法讲相应模块的服务注入注册进行封装,命名为 Add{Services},更加清晰明了地对我们的业务进行封装。

weixin_37648525的博客 5844

Spring.NET控制反转(IoC)和面向切面(AOP)的容器框架

Spring.NET 控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理这些对象,使得依赖 脱离类本身的控制,从而实现松耦合。

.Net依赖注入

什么是依赖注入,依赖注入的简单实现,服务生存期,获取服务的方法,Web Api中使用依赖注入

qq_58159494的博客 2215

Spring.Net依赖注入例子

Spring.Net,简单例子。从这个例子可以理解通过配置方式实现依赖注入

SAP FI模块实操:用F-28和F-32搞定客户回款与手动清账,别再让未清项报表一团糟

本文详细解析了SAP FI模块中F-28和F-32事务代码在客户回款与手动清账中的实操应用,帮助财务人员高效管理未清项报表。通过标准清账六步法和手动清账实战技巧,解决因操作不规范导致的账务混乱问题,提升应收账款管理效率。

weixin_30292843的博客 455

教程:在 .NET 中使用依赖注入

教程:在 .NET 中使用依赖注入

Yilong18的博客 1190

华为模拟器eNSP练习题 - HCIA综合实验

华为模拟器eNSP练习题 - HCIA综合实验 题目要求 ISP路由器只能配置IP地址,之后不得进行其他任何配置; 整个内部网络基于192.168.1.0/24进行地址规划; R1/R2之间启动OSPF协议,单区域; PC1-PC4自动获取IP地址; PC1不能telnet R1,PC1外的其他内网pc可以; PC1-PC4可以访问PC5,R2的公网接口只拥有一个公有IP12.0.0.1; 外部的client可以通过域名www.ensp.com访问http server; ISP路由telnet 12.0

炸鸡店老板z的博客 9882

.net core三种依赖注入方式,原生的依赖注入器,scrutor,autofac

特性原生 .NET Core DI原生 DI + ScrutorAutofac学习曲线低中等高功能基本增强(自动扫描、按约定)强大(条件注入、模块化注册等)性能最优略低优化良好,适用于复杂场景扩展性较差中等非常强易用性高中等中等适用场景小型/中型项目中型项目,服务较多时大型、复杂的应用原生 .NET Core DI适用于小型应用和中型应用,尤其是在功能需求相对简单时。原生 DI + Scrutor适合中型到大型应用,尤其是当需要自动扫描、按约定注册和灵活配置时。

情绪不稳定的98年程序员 2271

自定义LayoutManager实现android-pile-layout滑动卡片堆叠效果

这是我的第一篇博客,总算有个契机开始写博客了,就从自定义LayoutManager开始吧。 前段时间看到一个项目(android-pile-layout),效果特别不错,这是效果图: 效果确实不错,我看了下实现,是用的自定义的ViewGroup实现的,计算什么还搞的挺复杂的,具体的没细看。作者说也尝试过用LayoutManager实现,但是没找到合适的数学模型,好吧,看到数学模型我

u014296305的博客 1万+

OpenHarmony自定义Launcher

OpenHarmony源码版本:4.0release开发板:DAYU / rk3568DevEco Studio版本:4.0.0.600切换分支为OpenHarmony-4.0-Release,并下载源码。

Abner_Crazy的博客 1630

玩转 .NET 依赖注入:Microsoft.Extensions.DependencyInjection 深度指南

在现代 .NET 开发(自 .NET Core 起)中,依赖注入(Dependency Injection,简称 DI)已经成为了框架的基石。微软官方提供了库,它是一个轻量级、高性能的控制反转(IoC)容器。无论是开发 ASP.NET Core Web API、Worker Service 还是传统的 Console 控制台程序,掌握这个库的用法都是每个 .NET 开发者迈向中高级的必经之路。本文将带你从零开始,彻底掌握它的核心用法与最佳实践。单例服务不能依赖生命周期比它短的服务!例如:一个。

Denuin多啦咧梦的专栏 429

告别密码本!用Windows NPS给华为/华三交换机做Radius认证,SSH登录更安全

本文详细介绍了如何利用Windows NPS实现华为/华三交换机的Radius认证,提升SSH登录安全性。通过集中化管理、精细化控制和完整审计追踪,企业可告别传统密码本,大幅提升网络设备管理效率。文章包含NPS服务部署指南、交换机配置详解及调试技巧,助力企业构建安全高效的统一认证体系。

weixin_42549723的博客 421

Spring.NET依赖注入框架学习--实例化容器常用方法

Spring.NET依赖注入框架学习---实例化容器常用方法 本篇学习实例化Spring.NET容器的俩种方式 1、通过XmlObjectFactory创建一个Spring.NET容器 IResource input = new FileSystemResource ("objects.xml"); IObjectFactory factory = new XmlObject...

weixin_30898109的博客 104

python点云可视化

Python三种点云可视化方案:mayavi、matplotlib、CloudCompare。

叶子的博客 1万+

Qt5.15.7编译报错问题汇总:python2安装环境导致的问题

导致编译生成的:RegExpJitTables.h文件大小为0。RegExpJitTables.h 能生成且大小不为0KB。可以看到,正确的python路径,执行编译路径后。再执行 configure XXX…尝试直接改,将其改为正确的路径。

MusicScore的博客 1439

依赖注入ioc容器框架_.NET依赖项注入容器(IOC)列表

依赖注入ioc容器框架I'm trying to expand my mind around dependency injection in .NET (beyond the two frameworks I've personally used) and an starting to put together a list of .NET Dependency Injection Contain...

cunfuxiao7305的博客 393

【数据集3】高分辨率统计降尺度日值数据集NEX-GDDP的介绍与下载方法

对NEX-GDDP数据集进行介绍和下载说明

WW、forever的博客 2394

Spring.Net -- 概述

概述 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。 企业级应用一般由多个物理层组成,每个物理层也经常划分为若干功能层。不同层次之间需...

Courage-Hu的专栏 5163

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【ASP.NET专题】(11)——Spring.NET框架简介

从该文章开始主要学习Spring.NET框架,对于很多程序员来说,Spring.NET框架是矛盾的,大家必须配置一些以前没有接触的文件,同时更多的程序员却还不知道Spring.NET框架究竟是什么玩意,本章节主要介绍Spring.NET框架简介及模块说明。一、框架介绍Spring框架天生丽质,因其先进架构系列沿思想集成,使从产生就深得欢迎,设计模式运炉火纯青地方,幽雅魅力征服许JAVA,使

薛敬明的专栏 5296

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring 学习整理 -02- Spring 之 IoC 容器理解

Spring 学习 -02- Spring 之 IoC 容器理解 为面试做准备 参考原文:https://blog.csdn.net/MobiusStrip/article/details/87856628 Ioc 控制反转 Ioc(Inversion of control) 控制反转,这里的控制指把控制权从应用程序中剥离出来。ioc 它可以把创建对象和查找依赖对象的权限交给 Ioc 容器控制,而...

肖朋伟 1052

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

透析Spring(一): Spring之IoC容器理解

看懂Spring的IoC容器设计思路,好处,并和DI进行比较等

Java学习之道 4025

Spring.net的理解与初使用

前言 Springnet概念 在控制台程序中使用Springnet 创建应用和类 添加spring程序集引用 配置Springnet文件 Program里面代码 Springnet运行示例 深入了解Springnet 总结前言在.net中,创建对象最常用的方法是new类的实例。这样做有违“层与层之间松耦合”的原则。Spring应用了IOC、DI的概念,提供了一种新的创建对象的方式。 接下来在控制台

qq_34720759的博客 5287

Spring.NET依赖注入框架学习--Spring.NET简介

Spring.NET依赖注入框架学习--Spring.NET简介概述  Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序。它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。企业级应用一般由...

JiYF大男孩 1256

Spring.net的依赖注入

Spring.net的依赖注入 IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。   其原理是基于OO设计原则的The Hollywood Princip...

diqi2676的博客 143

【愚公系列】2023年10月 Java教学课程 149-Spring框架的容器

Spring容器对象是指在Spring框架中负责管理与组织所有Bean对象的对象。在Spring中,Bean是指被Spring容器实例化、管理和维护的Java对象。Spring容器对象以及Spring框架中有两种不同的实现方式:BeanFactory:是Spring框架最基本的接口,提供了一种工厂模式的实现,可以根据XML文件或注解配置来创建和管理Bean对象。ApplicationContext:是BeanFactory的一个子接口,提供了更多的高级功能,如国际化支持、事件机制、资源装载和AOP等。

愚公智库 5万+
上一篇: Spring.NET依赖注入框架学习--简单对象注入
下一篇: C#自定义按钮、自定义WinForm无边框窗体、自定义MessageBox窗体
JiYF
博客等级 码龄11年 356粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值