공부일기

2021.01.14 (목)

  • 구현파트 몇문제 더 풀기
  • 스프링 강의 1파트

 

 

codeTest

* snakeGame (Dummy) : 2시간정도 걸림.. -> 블로그 정리 완료

* 기둥과 보 : 1시간 풀고 남겨 둠 -> (답보고) 다품

구현 아이디어는 답과 동일했지만 파이썬 문법에서 list 활용을 너무 못해서 코드가 복잡해진 탓에

답을 맞추지 못했다.

list.remove(), for 문 돌리는 방식도 체득했으니 다음 문제에 다 적용시켜서 풀어보자

 

 

 

spring

* 빈 생명주기 콜백 시작

애플리케이션 시작시점에 미리 연결해두고 종료시점에 모두 종료해야 하는 작업들이 존재한다.

(데이터베이스 커넥션 풀, 네트워크 소켓 등등)
그래서 스프링을 통해 시작시점시 초기화작업, 종료시점시 종료작업을 진행하는 방법이 필요

 

- 스프링 빈의 전체적인 라이프 사이클

스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료

 

- 사용 전에 초기화 콜백이 있는 이유

: 의존관계 주입이 완료된 시점을 개발자에게 알려주기 위해서

 

-종료 전에 소멸전 콜백이 있는 이유

: 스프링 컨테이너가 종료된다는 것을 개발자에게 알려주기 위해서

 

- 스프링 빈 중요한 점

객체 생성 후에 의존관계 주입이 일어남 (객체 생성시 생성자에 의해 주입되는 것 제외)

중요해서 몇번 반복되는 개념임.

 

- 객체 생성과 초기화(의존관계 주입 포함) 분리하는 이유

초기화 단계는 어쨌든 객체가 "작용"하는 과정임.

객체가 생성될때는 생성만 되고, 작용될 때는 작용만 되어야 "하나의 역할에 충실" 하는 것인데

생성되며 작용하면 섞여 버림.

 

- 인터페이스로 콜백 받기 (거의 사용 x)

InitializingBean, DisposableBean 을 implemets로 받고

인터페이스 afterPropertiesSet(), destroy() 안에서 각 콜백시 수행할 명령어들을 작성하면 됨

 

단점

1. 너무 스프링 의존적임. (이름도 정해진걸로 사용해야함)

2. 외부 라이브러리에 적용할 수 없다.

 

- 빈 등록 초기화, 소멸 메소드

@Bean 옆에 내가 이름 지정해 만든 초기화, 소멸 메소드( init(), close() )를 추가한다

@Bean(initMethod = "init", destroyMethod = "close")

 

장점

1. 외부 라이브러리에도 적용 가능하다

2. destroyMethod의 default 는 "(inferred)" (뜻은 추론)x로 되어있는데 이것은 "close"나 "shutdown"이라는 이름의 메소드를 자동으로 호출해준다. 이 기능을 사용하지 않으려면 비워두지말고 ""로 해놓아야 한다.

 

 

- 애노테이션 (이 방법으로 사용하자)

init() 메소드 위에 @PostConstruct

close() 메소드 위에 @PreDestroy

 

유일한 단점

외부 라이브러리에 적용 불가능 -> @Bean(initMethod = "init", destroyMethod = "close") 이걸 사용하자

 

 

 

 

 

 

 

'공부일기' 카테고리의 다른 글

2021.01.20 (수)  (0) 2021.01.21
2021.01.15 (금)  (0) 2021.01.15
2021.01.13 (수)  (0) 2021.01.13
2021.01.12 (화)  (0) 2021.01.12
2021.01.11 (월)  (0) 2021.01.12