일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정렬
- 로컬 클래스
- 자바할래
- raw 타입
- 바운디드 타입
- 접근지시자
- docker
- 프리미티브 타입
- yield
- 제네릭 타입
- 익명 클래스
- 스파르타코딩클럽
- 항해99
- Study Halle
- auto.create.topics.enable
- 함수형 인터페이스
- 자바스터디
- System.in
- 제네릭 와일드 카드
- github api
- System.out
- Switch Expressions
- 상속
- 브릿지 메소드
- throwable
- 람다식
- junit 5
- 합병 정렬
- System.err
- annotation processor
Archives
- Today
- Total
코딩하는 털보
21.09.30 TIL 본문
새로운 과제를 받았다 과제에 대한 요구사항을 기획자로부터 받았다고 생각하고 분석해보자.
Requirement
- POJO
- 계정 도메인 모델 추가 {nickname, password}, 회원가입 기능 구현
- 댓글 도메인 모델 추가 {article, writer, content}, CRUD
- Spring
- login, authentication
- 레이어 별 단위 테스트 작성
- Open api
- kakao 소셜 로그인
- HTML
- 회원가입 페이지, 로그인 페이지 작성
- API
Contoller/Service/Repository
- Controller : Http 요청을 받거나 돌려주는 역할
- Service : 사용자 요구사항을 처리하기 위한 비즈니스 로직
- Repository : 데이터베이스에 접근하여 조회나 변경 등 데이터 자원을 처리하는 역할
IoC/DI
IoC(Inversion of Control) : 프로그램의 제어 흐름이 뒤바뀌는 것을 의미한다.
일반적인 제어의 흐름은 사용자가 필요한 객체를 직접 생성해서 사용한다.
private final ProductRepository productRepository;
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
IoC의 제어 흐름은 용도에 맞는 이미 생성된 객체를 가져다가 사용한다.
사용할 객체가 어떻게 생성되었는지는 알 수도 없고 알 필요도 없다. (느슨한 결합)
private final ProductRepository productRepository;
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
결국 IoC는 인스턴스화 될 때 객체를 집어넣을 생성자가 필요한데, 이때 사용하는 방법이 DI이다.
DI(Dependency Injection, "의존성 주입")는 인스턴스화 될 때 이미 생성되어 있는 객체를 주입하여 의존성을 해결한다.
Comments