Skip to content

Latest commit

Β 

History

History
43 lines (43 loc) Β· 1.96 KB

File metadata and controls

43 lines (43 loc) Β· 1.96 KB

@Async

  • Spring ν”„λ ˆμž„μ›Œν¬μ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” λ©”μ„œλ“œλ₯Ό λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰ν•  수 μžˆλ„λ‘ μ§€μ›ν•˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜
  • λΉ„λ™κΈ°μ μœΌλ‘œ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ›ν•˜λŠ” μž‘μ—…μ„ λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€.

μž‘λ™ 원리

  • @Async μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜λ©΄ λ©”μ„œλ“œμ˜ 호좜이 λ³„λ„μ˜ μŠ€λ ˆλ“œμ—μ„œ λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰λœλ‹€.
  • Spring은 λ‚΄λΆ€μ μœΌλ‘œ TaskExecutorλΌλŠ” λΉˆμ„ μ‚¬μš©ν•˜μ—¬ 비동기 μž‘μ—…μ„ κ΄€λ¦¬ν•œλ‹€.

μ„€μ •

  1. Spring Boot ν”„λ‘œμ νŠΈμ— @EnableAsync μ–΄λ…Έν…Œμ΄μ…˜μ„ μΆ”κ°€ν•˜μ—¬ 비동기 κΈ°λŠ₯을 ν™œμ„±ν™”ν•œλ‹€.
  2. 비동기 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜κ³ μž ν•˜λŠ” ν΄λž˜μŠ€μ— @Service λ“±κ³Ό ν•¨κ»˜ @Async μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•œλ‹€.
  3. λ©”μ„œλ“œ λ°˜ν™˜ νƒ€μž…μ€ void λ˜λŠ” Future<T> ν˜•νƒœμ—¬μ•Ό ν•œλ‹€.

μ‚¬μš© 방법

  1. @EnableAsync μ–΄λ…Έν…Œμ΄μ…˜μ„ μ„€μ • ν΄λž˜μŠ€μ— μΆ”κ°€ν•œλ‹€.
@Configuration
@EnableAsync
public class AsyncConfig {
	// μ„€μ • λ‚΄μš© (ThreadPool, 기타 μ„€μ • λ“±)
}
  1. @Async μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œλ‹€.
@Service
public class MyService {
	@Async
    public void asyncMethod() {
		// λΉ„λ™κΈ°μ μœΌλ‘œ 싀행될 λ‚΄μš©
    }
}

μ‚¬μš© 예제

@Service
public class MyService {
	@Async
    public CompletableFuture<String> asyncMethod() {
		return CompletableFuture.completedFuture("Async method completed.");
    }
}

μ£Όμ˜μ‚¬ν•­

  1. @Async μ–΄λ…Έν…Œμ΄μ…˜μ΄ μ„ μ–Έλœ λ©”μ„œλ“œλŠ” λ°˜λ“œμ‹œ public 으둜 μ„ μ–Έν•΄μ•Ό ν•œλ‹€.
  2. 비동기 λ©”μ„œλ“œλŠ” 같은 클래슀 λ‚΄μ—μ„œ ν˜ΈμΆœν•  수 μ—†λ‹€. λ©”μ„œλ“œ ν˜ΈμΆœμ€ μŠ€ν”„λ§ ν”„λ‘μ‹œλ₯Ό 톡해 μ΄λ£¨μ–΄μ§€λ―€λ‘œ 비동기 λ©”μ„œλ“œλŠ” λ™μΌν•œ 클래슀 λ‚΄μ—μ„œ ν˜ΈμΆœλ˜μ–΄λ„ λΉ„λ™κΈ°λ‘œ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.
  3. λ©”μ„œλ“œμ˜ λ§€κ°œλ³€μˆ˜λŠ” μžλ™μœΌλ‘œ λ³΅μ‚¬λ˜μ–΄ 비동기 μŠ€λ ˆλ“œμ—μ„œ μ‚¬μš©λœλ‹€. ν•˜μ§€λ§Œ λ ˆνΌλŸ°μŠ€λ‚˜ μ»¨ν…μŠ€νŠΈμ— λŒ€ν•œ μ²˜λ¦¬κ°€ ν•„μš”ν•œ 경우 λ³„λ„μ˜ μ‘°μΉ˜κ°€ ν•„μš”ν•˜λ‹€.