일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- static
- DI
- AOP
- DDL
- jwt
- jpa
- 열 속성
- Test
- 바이너리 카운팅
- lambda
- VUE
- KEVISS
- 필드 주입
- equals
- docker
- SQL
- java
- 재정의
- 인덱스
- StringBuilder
- 테스트 코드
- hashcode
- cache
- 생성자 주입
- stream
- redis
- select_type
- MSA
- 조합
- Spring
- Today
- Total
목록필드 주입 (2)
백엔드 개발자 블로그
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cWTj5X/btsB6ndmcqy/5lioxa58X7OjaqY6zDazNK/img.png)
작성한 이유 아래와 같은 경험으로 인해 글을 작성해 본다. 필드 주입 방법으로 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); } } 테스트에서 ..