본문 바로가기

분류 전체보기

(78)
메모) 구상/기획 단계라는 것
4회차 결과 스프링 section 9 (완강) [ 스프링빈 scope 개념 학습 ] - 빈의 생명주기를 이해하고, 스코프 개념을 새로 알았습니다. 싱글톤, 프로토타입, 웹 스코프 개념을 학습했습니다. [ Provider, Proxy 개념 학습 - 빈 scope 문제를 해결 ] - prototype scope 빈이 멤버로 있을 때 DI문제를 해결하는 방법으로 Provider로 해결(ObjectProvider, JSR330 Provider)하는 실습을 진행했습니다. - 웹스코프 중 request scope 개념을 학습하고, http요청에 대해 로그를 기록하는 request scope인 Logger를 구현하는 실습을 했습니다. Logger를 Controller와 Service에서 사용할 때 스코프 문제로 DI 시점 관련 ..
4회차 목표 스프링 section 9
웹 스코프 | request scope 문제해결 | Provider 그리고 Proxi 지난시간 : MyLogger는 request scope 빈이다. ∴ Controller 생성시점에 MyLogger는 존재하지 않기 때문에 단순히 private final MyLogger myLogger 처럼만 멤버로 두면 문제가 생긴다. ∴ Provider나 Proxy를 사용할 수 있다. ● Provider 적용 MyLogger를 주입하는게 아니라, MyLogger 찾을 수 있는 (Dependency Lookup할 수 있는) Provider를 주입하게 된다. ∴ MyLogger가 생성되는 시점(HTTP요청 들어올 때)에 주입받을 수 있게 된다! ∨ Controller의 멤변 myLogger는 request scope 빈이기 때문에 Provider를 적용하자 (ObjectProvider) 그럼 Contro..
웹 스코프 | request scope 웹 환경에서만 동작하는.. 웹 스코프.. 공부시쟉 ✨ ● 웹 스코프 종류 request : HTTP 요청 하나가 들어오고 나갈 때까지 유지되는 스코프 : 각각의 HTTP 요청마다 별도의 빈 인스턴스 생성&관리 session : HTTP Session과 동일한 생명주기 가지는 스코프 application : 서블릿 컨텍스트와 동일한 생명주기 가지는 스코프 websocket : 웹소켓과 동일한 생명주기 가지는 스코프 ↑ 나중에 공부하자 ● web 라이브러리 추가 웹 스코프인 request 스코프를 공부하기 위해서 웹 라이브러리를 추가해야 한다. implementation 'org.springframework.boot:spring-boot-starter-web' 그러면 CoreApplication (main메..
테스트 주도 개발 (TDD) TDD 철학 : 실제 코드를 구현하기 전에 테스트 코드를 먼저 구현 (요구 사항에 따라 전체 코드를 완성한 다음 테스트하는 것과 반대된다) TDD 장점 - 테스트에 대응하는 요구사항을 한 개씩 구현해가면, 필요한 요구사항에 집중하여 개선가능 - 테스트를 먼저 구현하면서, 코드에 어떤 공개 인터페이스를 만들어야하는지 신중히 검토하게 되어 코드를 올바르게 조직할 수 있음 - 요구사항을 만족시켰다는 사실을 좀 더 확신 가능 & 버그 줄임 - 테스트를 통과하기 위한 코드를 구현하기 때문에, 필요치 않은 테스트를 구현하는 일(오버엔지니어링)을 줄임 TDD 주기 ↓ 테스트 실행 (실패케이스) ↓ 코드 구현 ↓ 테스트 실행 (통과케이스) 리팩터링 ↓ 테스트 추가 (반복)
Bean Scope 개념 & 프로토타입 스코프 스프링빈 스코프 : 빈이 존재할 수 있는 범위~~ 스프링빈 Scope 종류 ∨ 싱글톤 : 기본 스코프 & 젤 긴 스코프... 지금까지 실습했던 것이 다 싱글톤 스코프.. 컨테이너 시작 후 빈생성 ~ 스프링 컨테이너 종료 전 빈소멸 ∨ 프로토타입 : 컨테이너가 빈생성&DI&(초기화콜백)까지 관여하고 그 이후는 관리 안한다. 매우짧은 스코프! ∨ 웹 관련 스코프 - request : 사용자로부터 웹요청 들어오고 나갈때까지 유지되는 스코프 - session : 웹세션 생성~종료 스코프 - application : 웹 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 + 스코프 지정 방법 그냥 @Scope("~~") 붙여주면 된다! 더보기 예) - 컴포넌트 스캔 자동 등록 경우 @Scope("prototype") ..
스프링빈 생명주기 콜백 메서드 요약 : 스프링빈 초기화/종료 콜백을 사용하기 위해 - @PostConstruct, @PreDestroy를 쓰자! - 근데 외부라이브러리는 수정 못하니까(저 애노테이션 못 붙이니까) @Bean(initMethod = "init", destroyMethod = "close") 사용해서 알맞게 지정해서 사용하자. 빈 생명주기 콜백 메서드 ... 초기화/종료 콜백 애플리케이션이 실행 & 종료되면서 객체의 초기화 & 종료 작업이 필요하다. 스프링은 '초기화 콜백'을 통해 그러한 초기화 시점을 알려주고, '소멸 콜백'을 통해 빈 소멸 직전에 안전하게 종료 작업을 진행할 수 있게 한다. ∨ 스프링 빈의 이벤트 라이프사이클 (singleton일 경우) ↓ 스프링 컨테이너 생성 ↓ 스프링 빈 생성 ↓ 의존관계 주입 r..
다른 블로그