- 구현파트 몇문제 더 풀기
- 스프링 강의 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 |