Skip to content
This repository has been archived by the owner on Feb 5, 2024. It is now read-only.

Integrate Spring.NET with Microsoft.Extensions.DependencyInjection

License

Notifications You must be signed in to change notification settings

akunzai/Spring.Extensions.DependencyInjection

Repository files navigation

Spring.Extensions.DependencyInjection

Build Status Code Coverage NuGet version

Integrate Spring.NET with Microsoft.Extensions.DependencyInjection

Installation

dotnet add package Spring.Extensions.DependencyInjection

Getting Started

integrate with Microsoft.Extensions.Hosting

var host = Host.CreateDefaultBuilder()
.UseServiceProviderFactory(new SpringServiceProviderFactory())
.ConfigureServices((context, services) =>
{
    // ...
}).Build();

integrate with ASP.NET Core Minimal APIs

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseServiceProviderFactory(new SpringServiceProviderFactory());

building ServiceProviderFactory from exists ApplicationContext

using Microsoft.Extensions.DependencyInjection;
using Spring.Context.Support;
using Spring.Extensions.DependencyInjection;
// ...
var factory = new SpringServiceProviderFactory(options =>
{
    var context = new CodeConfigApplicationContext();
    context.ScanAllAssemblies();
    context.Refresh();
    options.Parent = context;
});
// or
//var factory = new SpringServiceProviderFactory(ContextRegistry.GetContext());
// or
//var factory = new SpringServiceProviderFactory(new XmlApplicationContext("objects.xml"));
// ...

building ApplicationContext from ServiceCollection

using Microsoft.Extensions.DependencyInjection;
using Spring.Context.Support;
using Spring.Extensions.DependencyInjection;
// ...
var factory = new SpringServiceProviderFactory();
var services = new ServiceCollection();
ConfigureServices(services);
var context = factory.CreateBuilder(services);
// ...

building ServiceProvider from Spring.NET ApplicationContext

using Microsoft.Extensions.DependencyInjection;
using Spring.Context.Support;
using Spring.Extensions.DependencyInjection;
// ...
var factory = new SpringServiceProviderFactory();
var services = new ServiceCollection();
ConfigureServices(services);
var context = factory.CreateBuilder(services);
var provider = factory.CreateServiceProvider(context);
// or directly building serviceProvider from exists ApplicationContext without integrate ServiceCollection
//var provider = factory.CreateServiceProvider(ContextRegistry.GetContext());
// ...

Known issues

  • the same service type in CodeConfigApplicationContext or XmlApplicationContext was preferred for SpringServiceProvider in SpringServiceScope