Spring

[Spring] @AllArgsConstructor, @RequiredArgsConstructor ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ ์ด์œ 

2024. 3. 5. 18:02
๋ชฉ์ฐจ
  1. Spring DI๋ž€?

 

 

์ธํ„ด ์ƒํ™œ์„ ํ•˜๋ฉด์„œ @AllArgsConstructor, @RequiredArgsConstructor ์ด ๋‘ ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ณธ ์ ์ด ์—†์—ˆ๋Š”๋ฐ, ๊ทธ๋ƒฅ ์‚ฌ์šฉ์„ ์•ˆํ•˜๋Š”๊ฑฐ๊ตฌ๋‚˜๋ผ๊ณ ๋งŒ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋ฌธ๋œฉ ์™œ ์ง€์–‘ํ• ๊นŒ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค!

 

์ผ๋‹จ spring di๋ถ€ํ„ฐ ์ž‘์„ฑํ•˜์ž๋ฉด!

 

Spring DI๋ž€?

DI๋Š” ์Šคํ”„๋ง ํ•ต์‹ฌ ๊ธฐ์ˆ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์˜์กด์„ฑ ์ฃผ์ž…์ด๋‹ค. ๊ฐ์ฒด๋“ค๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์Šคํ”„๋ง IoC ์ปจํ…Œ์ด๋„ˆ์˜ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์ƒ์„ฑ์ž ์ฃผ์ž…, ํ•„๋“œ ์ฃผ์ž…, setter ์ฃผ์ž… ์„ธ๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ๊ทธ ์ค‘์—์„œ ์Šคํ”„๋ง์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ์‹์€ ์ƒ์„ฑ์ž ์ฃผ์ž…์ด๋‹ค.

 

@Service
public class UserService {

    private final UserRepository userRepository;

    @Autowired // ์ƒ์„ฑ์ž๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ์ƒ๋žต ๊ฐ€๋Šฅ
    public UserService(UserRepository userRepository, MemberService memberService) {
        this.userRepository = userRepository;
    }

}

 

์ด๋Ÿฐ์‹์œผ๋กœ ์“ฐ๋ฉด ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๋ฐฉ์‹์„ ์Šคํ”„๋ง์—์„œ๋Š” @AllArgsConstructor, @RequiredArgsConstructor ์ด ์–ด๋…ธํ…Œ์ด์…˜ ํ•˜๋‚˜๋งŒ์œผ๋กœ ์ƒ์„ฑ์ž ์ฃผ์ž…์„ ์ผ์ผ์ด ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

DTO์—์„œ @AllArgsConstructor ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ „์ฒด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ง€๋Š” ์ƒ์„ฑ์ž ์„ ์–ธ์„ ํ•  ์ˆ˜ ์žˆ๊ณ , Controller์™€ Service์—์„œ๋Š” @RequiredArgsConstructor์ด๊ฑธ ์‚ฌ์šฉํ•ด์„œ ์ƒ์„ฑ์ž ์„ ์–ธ์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•˜๋ฉด์„œ DI๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

๊ทผ๋ฐ ์ด ์‚ฌ์šฉ์„ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค

@Getter
@AllArgsConstructor
public class Member {

    public String email;

    public String nickname;
 }

 

ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒ์„ฑ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ

Member member = new Member("email", "nickname");

 

๋งŒ์•ฝ ๋ณ€์ˆ˜ ์„ ์–ธ ์ˆœ์„œ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟจ๋‹ค๊ณ  ์ณค์„ ๋•Œ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์–ด๋„ ๊ฐ์ฒด ์ƒ์„ฑ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๊ฒŒ ๋˜๊ณ  ๊ฒฐ๊ตญ ์ž˜๋ชป๋œ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ฒŒ ๋œ๋‹ค.

@Getter
@AllArgsConstructor
public class Member {

    public String nickname;

    public String email;
 }

 

 

๋”ฐ๋ผ์„œ ๋‚˜๋„ DTO์—๋Š” ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉ ์•ˆํ•˜๊ณ  @Getter์™€ @Builder๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค!

๊ทผ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋ฉด Controller๋‚˜ Service์—์„œ  @RequiredArgsConstructor๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€๋ผ๋Š” ์ƒ๊ฐ์„ ํ•ด์„œ ์ฐพ์•„๋ดค๋‹ค.

 

[์ธํ”„๋Ÿฐ]@AllArgsConstructor, @RequiredArgsConstructor ์‚ฌ์šฉ๊ธˆ์ง€๋ฅผ ๊ถŒํ•˜๋Š” ๊ธ€์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ธ€์„ ๋ณด๋ฉด ๊น€์˜ํ•œ ๊ฐ•์‚ฌ๋‹˜์€ @AllArgsConstructor ์‚ฌ์šฉ์€ ์ง€์–‘ํ•˜์ง€๋งŒ @RequiredArgsConstructor๋Š” ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค! 

 

๊ทผ๋ฐ ๋‚˜๋Š” ์ผ๋‹จ์€? ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„ ์ € ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋‹ˆ๊นŒ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๊ณ  ์‚ฌ์šฉ์„ ์•ˆํ•˜๊ธฐ๋„ ํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ๋” ๊ผผ๊ผผํžˆ ์ฒดํฌํ•˜๋Š” ๋ฒ„๋ฆ‡์„ ๋“ค์ด๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋กœ ํ–ˆ๋‹ค!!  

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] N+1 ๋ฌธ์ œ์™€ fetch join ํ•ด๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ  (0) 2024.03.15
[Spring] JWT AccessToken/RefreshToken ๊ตฌํ˜„ (with. Redis)  (0) 2024.03.12
[Spring] @ExceptionHandler๋ฅผ ํ†ตํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (+ DTO Validation)  (0) 2024.03.05
[Spring] MessageSource๋ฅผ ์ด์šฉํ•œ ๊ตญ์ œํ™” exception ์ ์šฉํ•˜๊ธฐ  (0) 2024.03.02
[Spring] Spring Cache(์Šคํ”„๋ง ์บ์‹œ)๋ž€?  (0) 2024.02.19
  1. Spring DI๋ž€?
'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring] N+1 ๋ฌธ์ œ์™€ fetch join ํ•ด๊ฒฐ ๋ฐ ํ…Œ์ŠคํŠธ
  • [Spring] JWT AccessToken/RefreshToken ๊ตฌํ˜„ (with. Redis)
  • [Spring] @ExceptionHandler๋ฅผ ํ†ตํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (+ DTO Validation)
  • [Spring] MessageSource๋ฅผ ์ด์šฉํ•œ ๊ตญ์ œํ™” exception ์ ์šฉํ•˜๊ธฐ
DAHLIA CHOI
DAHLIA CHOI
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผ
DAHLIA CHOI
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… (5)
    • ํšŒ๊ณ  (0)
    • ๊ธฐํƒ€ (5)
    • FRENCH (1)
    • ํ•„์‚ฌ (2)
    • ๊ฒฝํ—˜ (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
DAHLIA CHOI
[Spring] @AllArgsConstructor, @RequiredArgsConstructor ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ ์ด์œ 
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.