일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Exception
- 생성자 주입
- KEVISS
- 필드 주입
- SQL
- hashcode
- VUE
- DI
- equals
- docker
- StringBuilder
- 열 속성
- redis
- cache
- 조합
- 인덱스
- Spring
- select_type
- 테스트 코드
- jpa
- lambda
- AOP
- stream
- 재정의
- jwt
- static
- java
- DDL
- MSA
- Test
- Today
- Total
목록필드 주입 (2)
백엔드 개발자 블로그

작성한 이유 아래와 같은 경험으로 인해 글을 작성해 본다. 필드 주입 방법으로 DI를 하니 테스트에서 NullPointError 발생해서 고생 좀 했다. Controller에서 @Autowired없이 @RequiredArgsConstructor으로 Service DI 하는 코드를 봤다. 다양한 DI 방법 필드 주입 (비추) 필드 변수에 @Autowired 선언 외부에서 수정이 불가능 의존성 주입을 남발 가능성 있음(주입하는 class 생성자가 많을 경우) -> 의존성, 결합에 대한 문제가 발생 -> 단일 책임 원칙에 위배 final 키워드를 통한 선언이 불가능하므로 객체가 mutable 테스트 시 불편함 반드시 DI 프레임워크의 도움을 받아야 함, 테스트에서는 DI 프레임워크 사용 못해서 NPE 발생함 ..
원인 필드 주입 사용 public class MailSender { @Autowired private JavaMailSender javaMailSender; public void sendText(String msg, String mailReceiver) { javaMailSender.sendText(msg, mailReceiver); } } 테스트 코드 작성 public class MailSenderTest { @Test public void mailSendTest { MailSender mailSender = new MailSender(); String mailReceiver = "asdf@test.com"; mailSender.sendText("테스트", mailReceiver); } } 테스트에서 ..