Java Spring Boot VS .NetCore (三)Ioc容器处理
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World
Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
Java Spring Boot VS .NetCore (三)Ioc容器处理
Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (五)MyBatis vs EFCore
Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml
Java Spring Boot VS .NetCore (七) 配置文件
Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute
Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security
Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper
Java中Spring Ioc 的处理还是通过配置文件的方式来实现,容器的初始需要说到上下文对象
ApplicationContext这个类,通过ClassPathXmlApplicationContext 加载 Ioc容器Xml配置并通过该实例对象的GetBean来获取对象实例
下面我就这一块对比 Java 与 .NetCore的使用方式
容器处理
Java:
首先需要建立Spring Ioc的xml配置文件,配置Bean, 也可以通过 @Component 注解的方式实现
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="testUserServices" class="com.example.demo.Services.interfaces.Impl.UserServices" >
</bean> </beans>
结合之前的helloword例子,我们修改下代码 getBean通过Id得到,略掉了类相关代码
@RequestMapping("/helloworld")
public String Index()
{
ApplicationContext ctx=new ClassPathXmlApplicationContext("spring-ioc.xml");
IUserServices servers= (IUserServices) ctx.getBean("testUserServices");
return servers.SayHello("张三");
}
.NetCore:
core中添加了services.AddScoped<IUserServices, UserServices>(); 添加了相关类的注册,而Java中则是通过XML配置
[Route("~/helloworld")]
public IActionResult Index()
{
var servers=(IUserServices) HttpContext.RequestServices.GetService(typeof(IUserServices));
var model= servers.FindByName("admin").Result;
return View();
}
这里可以看到 .NetCore 中的 GetServices 与 Java中的 getBean 其实也就是那么一回事
注册的种类
Java:Java可以通过构造函数、属性注入的方式来注册
.NetCore:同理使用Autofac 也可实现上述,但是.NetCore 中的 Dependence Injection (DI) 一般为构造函数注册 ,但是属性注入需要特殊处理
Java的xml配置 :
在Bean中添加
属性注入:
<property name="testUserServices" value="com.example.demo.Services.interfaces.Impl.UserServices"></property>
构造函数注入:
<constructor-arg name="testUserServices" value="com.example.demo.Services.interfaces.Impl.UserServices"></constructor-arg>
.NetCore中对注入这块个人觉得很方便的
属性注入
services.AddScoped<IDbProviderFactory>(p=> {
return new CreateDbProviderFactory() { Abc = new ABC(); }
});
构造函数注入
在Startup中添加 services.AddScoped<IUserServices, UserServices>();
生命周期管理
Java 配置 Scope
scope="singleton"
scope="prototype"
scope="request"
singleton:单例模式,容器中只会存在一个实例
prototype:每次请求的每次访问生成一个实例
request:每一次请求生成一个实例
.NetCore中
services.AddSingleton
services.AddScoped
services.AddTransient
Singleton :单例模式
Scoped:每次请求的每次反问生成一个实例
Transient:每次请求生成一个实例
先介绍到这里下面看下Java 这边的效果

Java Spring Boot VS .NetCore (三)Ioc容器处理的更多相关文章
- Java Spring Boot VS .NetCore (一)来一个简单的 Hello World
系列文章 Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filte ...
- Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (五)MyBatis vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (七) 配置文件
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
随机推荐
- Java的clone():深复制与浅复制
Java中要想自定义类的对象可以被复制,自定义类就必须实现Cloneable中的clone()方法,如下: public class Student implements Cloneable { pr ...
- emwin 之 LISTWVIEW 控件禁止列滑动
@2019-02-25 [小记] hHeader = LISTVIEW_GetHeader(hListView); WM_DisableWindow(hHeader);
- [AMD驱动]解决AMD驱动的1603错误
官方:https://www.amd.com/en/support/kb/faq/gpu-kb1603 其实把更改的文档 下载 音乐等默认目录恢复到C盘(或任意一个可访问的路径),就可以正常安装了.
- golang 笔记
golang 的坑 package main import ( "fmt" "net/http" "time" ) func Hello(w ...
- 腾讯笔试---小Q的歌单
链接:https://www.nowcoder.com/questionTerminal/f3ab6fe72af34b71a2fd1d83304cbbb3 来源:牛客网 小Q有X首长度为A的不同的歌和 ...
- Flink部署-standalone模式
Flink部署-standalone模式 2018年11月30日 00:07:41 Xlucas 阅读数:74 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...
- Redis(REmote DIctionary Server)基础
Redis(REmote DIctionary Server)基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Redis是一个开放源代码(BSD许可)的内存数据结构存储,用作数 ...
- 将matlab数据保存为excel文件
摘录网址:https://blog.csdn.net/wangh0802/article/details/70312415 参考网址:https://jingyan.baidu.com/article ...
- 深入jar包:从jar包中读取资源文件getResourceAsStream
一.背景 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等). 在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不 ...
- VMware 虚拟机运行卡慢的解决办法
虚拟机的运行速度有一部分原因决定于你的物理机的配置,如果你的物理机配置不高,建议不要运行虚拟机,那样反而会更卡! 切记!!!在操作之前,先给虚拟机拍摄一个快照,然后所有操作都在虚拟机关机的情况下执行! ...