java dotnet core_Java Spring Boot VS .NetCore (三)Ioc容器处理

Java中Spring Ioc 的处理还是通过配置文件的方式来实现,容器的初始需要说到上下文对象

ApplicationContext这个类,通过ClassPathXmlApplicationContext 加载 Ioc容器Xml配置并通过该实例对象的GetBean来获取对象实例

下面我就这一块对比 Java 与 .NetCore的使用方式

容器处理

Java:

首先需要建立Spring Ioc的xml配置文件,配置Bean, 也可以通过 @Component 注解的方式实现

结合之前的helloword例子,我们修改下代码 getBean通过Id得到,略掉了类相关代码

@RequestMapping("/helloworld")publicString Index()

{

ApplicationContext ctx=new ClassPathXmlApplicationContext("spring-ioc.xml");

IUserServices servers= (IUserServices) ctx.getBean("testUserServices");return servers.SayHello("张三");

}

.NetCore:

core中添加了services.AddScoped(); 添加了相关类的注册,而Java中则是通过XML配置

[Route("~/helloworld")]publicIActionResult Index()

{var servers=(IUserServices) HttpContext.RequestServices.GetService(typeof(IUserServices));var model= servers.FindByName("admin").Result;returnView();

}

这里可以看到 .NetCore 中的 GetServices 与 Java中的 getBean 其实也就是那么一回事

注册的种类

Java:Java可以通过构造函数、属性注入的方式来注册

.NetCore:同理使用Autofac 也可实现上述,但是.NetCore 中的 Dependence Injection (DI) 一般为构造函数注册 ,但是属性注入需要特殊处理

Java的xml配置 :

在Bean中添加

属性注入:

构造函数注入:

.NetCore中对注入这块个人觉得很方便的

属性注入

services.AddScoped(p=>{return new CreateDbProviderFactory() { Abc = newABC(); }

});

构造函数注入

在Startup中添加 services.AddScoped();

生命周期管理

Java 配置 Scope

scope="singleton"scope="prototype"scope="request"

singleton:单例模式,容器中只会存在一个实例

prototype:每次请求的每次访问生成一个实例

request:每一次请求生成一个实例

.NetCore中

services.AddSingleton

services.AddScoped

services.AddTransient

Singleton :单例模式

Scoped:每次请求的每次反问生成一个实例

Transient:每次请求生成一个实例

先介绍到这里下面看下Java 这边的效果

d9186c9792c01709cc5d84ecd58150b6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值