Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바
- 스프링 시큐리티
- git
- github
- IT
- C#
- Newtonsoft.Json
- 스프링부트
- Exception in thread "main" java.lang.Error
- SSMS
- MSSQL
- sql server manager
- 프로시저
- RAISERRR
- 권한
- springboot
- JavaScript
- jpa
- SQL Server
- SOP
- SQL Server 구성 관리자
- OUT 파라미터
- IT story
- System.Text.Json
- .NET 8.0
- ERROR_MESSAGE
- 데이터베이스
- java
- ORM
- cors
Archives
- Today
- Total
its_jh_stroy
[C#] WorkerService 작업자 서비스 프로젝트에서 의존성 추가하기 본문
작업자 서비스 프로젝트에서는 Program.cs 파일을 통해 의존성을 주입할 수 있다.
Program.cs 파일은 기본적으로 아래와 같은 형태로 되어있다.
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build();
await host.RunAsync();
ConfigureServices에 들어가는 Action 메서드를 수정하여 의존성을 주입할 수 있다.
주입할 의존성 타입 생성자에 파라미터가 필요 없는 경우도 있지만 필요한 경우도 있다.
각 경우에 따라 필요한 소스이다.
생성자 파라미터가 필요 없는 경우
//Program.cs
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
// MyClass 타입 인스턴스 주입
// 생성자 파라미터가 없는 경우
services.AddSingleton<MyClass>();
})
.Build();
await host.RunAsync();
생성자 파라미터가 필요한 경우
//Program.cs
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
// MyClass 타입 인스턴스 주입
// 생성자 파라미터가 있는 경우
services.AddSingleton<MyClass>
(
serviceProvider =>
new MyClass
(
"AA",
"BB",
30
)
);
})
.Build();
await host.RunAsync();
위와 같이 코드를 작성했다면 다음으로 실행되는 Worker 클래스 생성자를 수정한다.
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
// MyClass 파라미터 추가
public Worker(ILogger<Worker> logger, MyClass myClass)
{
_logger = logger;
}
// ...
}
위 작업이 끝나면 특정 인스턴스를 주입하여 프로그램을 실행할 수 있게 된다.
'C#' 카테고리의 다른 글
[C#] ASP.NET Core에서 CORS 문제 해결하기 (0) | 2024.02.08 |
---|---|
[C#] System.Text.Json과 Newtonsoft.Json (0) | 2024.01.30 |
[C#] .NET 8.0이 실행되는 과정 (0) | 2024.01.15 |
[C#] WPF WebView2로 웹 페이지 표시하기 (0) | 2023.12.09 |
[C#] Task와 async, await (0) | 2023.11.15 |