﻿# Spring


> [!WARNING]
> Starting with NServiceBus version 7, the dependency injection container adapter packages are no longer required. NServiceBus directly supports the `Microsoft.Extensions.DependencyInjection` model and third party containers can be integrated using the [NServiceBus.Extensions.DependencyInjection package](/nservicebus/dependency-injection/extensions-dependencyinjection.md) or via the [.NET Generic Host](https://learn.microsoft.com/en-us/dotnet/core/extensions/generic-host).
>
> In NServiceBus version 8, NServiceBus will no longer provide adapters for external dependency injection containers.
>
> Visit the [dependency injection upgrade guide](/nservicebus/upgrades/7to8/dependency-injection.md) for further information.


NServiceBus can be configured to use [Spring](https://www.springframework.net/) for dependency injection.

### Default usage

<!-- snippet: Spring -->

```cs
endpointConfiguration.UseContainer<SpringBuilder>();
```

<!-- endsnippet -->

### Using an existing context

<!-- snippet: Spring_Existing -->

```cs
var applicationContext = new GenericApplicationContext();
applicationContext.ObjectFactory
    .RegisterSingleton("MyService", new MyService());
endpointConfiguration.UseContainer<SpringBuilder>(
    customizations: customizations =>
    {
        customizations.ExistingApplicationContext(applicationContext);
    });
```

<!-- endsnippet -->

### DependencyLifecycle Mapping

The [NServiceBus dependency lifecycle modes](/nservicebus/dependency-injection/index.md) do not map directly to Spring object scopes. Almost all of the lifecycle modes have been implemented using custom type registrations using a Spring [`GenericApplicationContext`](http://springframework.net/docs/1.3.2/api/net-2.0/html/topic1040.html).

## Property Injection

This dependency injection container adapter automatically enables property injection for known types. Use the `Func` overload of `.ConfigureComponent` to get full control over the injected properties if needed.
