post로 유저의 아이디, 닉네임을 만들고, 그 아이디가 있어야 할일목록을 만들수 있고 그 닉네임이 그대로 할일목록 이름으로 전환 user이 안되서 고생했는데 강의에서 그런 내용이 있다는걸 깜빡했다.
app_user로 바꿔야 한다!!!
DI
스프링 트라이앵글 면접 물어봄
aop, psa, IoC/ DI POJO를 둘러싼 삼각형
di가 의존성에 대한 주입이라면, aop는 로직주입으로 횡단관심사라고 부름.콘트롤러에서 서비스로 횡단 이런식.
psa는 일관성있는 추상화란 뜻이로 잘만든 인터페이스란 뜻
ioc는 매소드나 객체의 호출을 개발자가 아닌 프레임워크가 하는것. di는 의존성 주입이란 뜻으로, 둘다 거의 비슷함
di는 스프링에서만이 아니라 다 쓰임
객체지향은 낮은 결합, 높은 응집
객체내부에 다른 댁체를 생성한다면 그건 강한 결합을 가진다고 표현. a에서 b를 형성했는데 b를 c로 바꾸면 a도 바꿔야함
그래서 여러개 있으면 야근해야함.
그래서 느슨한 결합인 인터페이스를 사용. 하지만 그것만으론 불안정하고
서비스를 팩토리랑 연결, 서브스팩토리이렇게 실제 사용하는걸 factory로 사용. 그러면 수정도 편하다.
@Configuration
class ServiceFactory이렇게
@service, @controller, @componet는 다 같은거 이걸 쓰면 자동으로 @Bean이 생성.
생성자 주입방식이 권장되는 이유
1. 의존되는 객체의 불변성 확보. 2. 순환참조 방지. 3. 테스트코드 작성 용이 1번이 가장 중요.
의존관계는 val로 불변. 하나라도 누락시 바로 작동 안됨. var은 안쓰는게 좋다.
자바코드 인텔리제이에 쓰면 자동 변경되니 맘대로 써도 된다.
생성자주입 쓰면 오류나면 바로 알수있다. 잘못되면 실행이 안된다.
근데 필드주입은 잘못되도 그대로 작동되서 개판되기 쉽다. 그대신 맘대로 쓸수있다.
생성자는 깔끔하고, 테스트코드 작성도 유리하다.