์ธํด ์ํ์ ํ๋ฉด์ @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๋ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ํ๋ค!
๊ทผ๋ฐ ๋๋ ์ผ๋จ์? ๋ค๋ฅธ ๊ณณ์์๋ ์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ง ์์ผ๋๊น ์ผ๊ด์ฑ์ ์ ์งํ๋ ค๊ณ ์ฌ์ฉ์ ์ํ๊ธฐ๋ ํ๊ณ , ์ฝ๋๋ฅผ ๋ ๊ผผ๊ผผํ ์ฒดํฌํ๋ ๋ฒ๋ฆ์ ๋ค์ด๊ธฐ ์ํด์ ์ฌ์ฉํ์ง ์๊ธฐ๋ก ํ๋ค!!
'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 |