일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- System.err
- 제네릭 타입
- Switch Expressions
- docker
- 접근지시자
- 스파르타코딩클럽
- auto.create.topics.enable
- 자바스터디
- 항해99
- System.in
- 바운디드 타입
- 로컬 클래스
- annotation processor
- github api
- 함수형 인터페이스
- 자바할래
- 익명 클래스
- yield
- 프리미티브 타입
- System.out
- junit 5
- raw 타입
- 상속
- 정렬
- throwable
- 람다식
- 제네릭 와일드 카드
- 브릿지 메소드
- Study Halle
- 합병 정렬
- Today
- Total
코딩하는 털보
21.09.26 TIL 본문
이번주 마무리
이번 WIL의 키워드
- Spring : DI, IoC, Bean
배운것
Git, Spring, Docker, Junit
DI(Dependency Injection)/IoC(Inversion of Control)
DI와 IoC는 Spring 개발의 핵심적인 특징이다. 이 둘은 Spring에 국한된 용어가 아니다.
Spring은 객체지향을 위해 만들어진 프레임워크이며 객체지향을 위해 사용되는 로직이 DI와 IoC이다.
DI
https://rockintuna.tistory.com/153
DI는 사용과 제작을 분리하는 강력한 메커니즘 중 하나이다.
객체를 필요로하는 클래스 내에서 직접 객체를 생성하면 특정 클래스에 의존하게 되어 유연성이 떨어진다. 그리고 유지보수도 어렵다. 그렇다고 setter같은 제어 메서드를 쓰더라도 어색하거나 오류를 내기 쉽다.
DI는 객체를 필요로하는 클래스 내에서 직접 객체를 생성하지 않고 외부에서 이 클래스를 인스턴스화 할때 직접 생성하여 클래스에 주입하는 방식이다.
이 방식은 제어 메서드를 따로 사용하는 것 보다 단순하여 유지보수와 테스트가 쉽고 Thread-safe 하다는 장점이 있다.
하지만 DI는 큰 프로젝트에서는 오히려 코드를 어지럽게 만들 수 있다. 의존 객체 주입 프레임워크(대거, 주스, 스프링)를 사용하면 어질러짐을 해결할 수 있다.
DI 프레임워크에서는 의존성 관리에 대한 책임을 전적으로 전담하는 'main' 루틴이나 특수 컨테이너를 사용한다. 스프링에서는 어플리케이션 컨텍스트가 그 역할을 한다.
IoC
Spring은 어플리케이션 컨택스트(IoC 컨테이너)에 객체를 생성하고 생성된 객체들(Bean)의 의존성을 관리해준다.
제어의 역전이라는 객체에 대한 관리를 프레임워크가 대신해주는 Spring의 대표적인 특징이다.
객체를 생성할 때 필요한 의존성을 주입하는 작업을 개발자가 직접하지 않고 어플리케이션 컨택스트가 대신해준다.
또한 객체의 스코프나 라이프 사이클도 어플리케이션 컨텍스트에 의해 제어된다.
Bean
Bean은 Spring의 어플리케이션 컨텍스트가 의존성을 관리하는 객체들이다.
Bean들은 어플리케이션 컨텍스트에 의해서 의존성이 필요한 영역에 자동으로 주입된다.
느낀것
- 게시판 CRUD를 만들면서 처음엔 너무 간단한 API만 만드는 건 아닐까 생각했다. 하지만 Spring 개발은 API 말고도 생각해야할 여러가지들이 있었다.
역시 Spring은 지난주에 했던 flask 개발보다는 훨신 어렵다는 생각이 들었다. - 조원들의 문제를 몇 번 같이 해결했다. 도움을 준 것도 뿌듯하지만 설명하면서 나도 더 잘 이해할 수 있게 된 것 같다.
- 메서드나 변수 이름을 더 잘 지으려고 노력했다. 정말 간단한 로직인데도 불구하고 고민하게 되는걸 보면 복잡한 로직에서는 이름짓는데만 한 세월 걸릴 것 같다.
좋은 개발자
일주일마다 좋은 개발자란 어떤 사람인지 하나씩 생각해보기
- 노력하는 사람
잘 모르더라도 먼저 해보려고 하고 아무것도 안하고있는걸 싫어하는 사람은 동료로서 매력이 있다는 것을 많이 느꼈다. - 소통하는 사람
질문도 좋고 사적인 얘기도 좋고 그냥 농담도 좋고 뭐든지 대화하려고 하는 사람은 협업할 때 좋은 것 같다.
서로에 대해서 더 이해할 수 있는 것은 많은 도움이 된다. - 책임감 있는 사람
맡은 일에 책임을 다하려고 노력하는 사람은 멋지다. 자신이 일을 못하는 상황이 되었을 때마저 인수인계를 대충하지 않는 사람은 멋질 것 같다. - 탐구력이 있는 사람
기술에 대해 깊게 파고들면 학습은 오래걸릴 수 있지만 기술을 더 논리적으로 사용할 수 있다.