spring.net入门
准备工作
现在手头还没有Spring.NET的朋友,先让我们来到这里下载一份(出于功能考虑推荐使用1.1 Preview 3版的)
如同使用其他第三方工具一样,依据.NET版本引用好Spring.Core.dll程序集,然后在配置文件中加入这么一段
step 1:<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 xmlns="http://www.springframework.net">
</objects>
</spring>
OK,第一步工作做好.
不知道,各位在外漂泊的单身汉是不是有跟我一样的苦恼: 快餐吃来吃去,晚上经常不知道吃啥好,得,我就拿这个做DEMO吧.
先定义一个接口咯
step2:public interface 晚上吃啥
{
void 吃饭();
}
口味比较重,一般比较喜欢[吃辣椒炒肉褒仔饭] 和 [吃水煮鱼]
step3:public class 吃辣椒炒肉煲仔饭 : 晚上吃啥
{
public void 吃饭()
{
Console.WriteLine("吃辣椒炒肉煲仔饭咯");
}
}
public class 吃水煮鱼 : 晚上吃啥
{
public void 吃饭()
{
Console.WriteLine("吃水煮鱼咯");
}
}
写好了,我也决定了:水煮鱼
在config文件的<objects></objects>之间加上一句
step 4:<objects xmlns="http://www.springframework.net">
<object id="晚餐" type="SpringDemo_1.吃水煮鱼,SpringDemo_1" />
</objects>
美食当前,具体怎么享用呢? 看这里
step 5:[STAThread]
static void Main(string[] args)
{
Spring.Context.IApplicationContext ctx =
Spring.Context.Support.ContextRegistry.GetContext();
晚上吃啥 temp = ctx["晚餐"] as 晚上吃啥;
temp.吃饭();
}
运行一下, 看到结果了吧 hoho~~
--------------------------------------------------------------------------
现在让我们回过过头来看看,具体每一步都做了什么
step 1:
<configSections></configSections> 配置节,定义了<spring>配置组
<context><resource uri="{0}" /></context>
Spring.NET里默认提供了三种资源描述方式:
1) <resource uri="config://spring/objects" />
表示在config配置文件的<spring><objects>配置节内部定义了<object />
2) <resource uri="~/yourAppContext.xml" />
表示在程序的根目录下的yourAppContext.xml文件里定义了<object />
3)<resource uri="assembly://assemblyName/namespace/yourAppContext.xml" />
表示yourAppContext.xml设为了嵌入式资源,并在其中定义了<object />
step 2:
自定义的行为规范
step 3:
行为规范的具体实现
step 4 :
通过Spring.NET的IoC容器来配置由哪个符合行为规范的对象来执行行为
step 5:
执行行为,具体由谁执行,调用者(main()方法)不知情。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?