ㅇ 빈의 생명주기에 대해 알아보자
ㅇ 객체 생성 후 , 객체 소멸 전 함수를 실행하는 방법에 대해 알아보기
빈의 생명주기 예제1
1. Person 만들어주기
ㅇ person 에 변수 선언 및 생성자함수(AllArgsConstructor) 와 @Data 해주기
2. OtherPerson Class도 만들어주기 (Person과 비슷하게 생김)
ㅇ 얘도 Data 와 AllArgsConstructor 생성해주기
3. xml 화일에다가 객체 두개 만들어 보기 (applicationCTX 파일 )
4. ctx 파일에서 빈 두개 만들기 (클래스가 두개니까)
5. 마찬가지로 컨테이너 만들고 applicationCTX를 파싱하면 객체가 딱 만들어짐 (현재는 객체안에 데이터만 셋팅되어있는 상태) 하지만 이번단에선 Person이라는 객체가 생길떄 항상 무슨일 하게 만들고 싶고, otherPerson 객체 생길때 항상 무슨일 생기게 하고 싶음 이것을 추가하는 방법이 두가지가 있음
1). 객체 생성 하자마자 무슨 일 하게 하고 싶으면 : initializingBean(인터페이스) 을 implement 하면 , 인터페이스 속 메소드를 오버라이드를 해야함
2). 객체가 사라지기 바로 직전에 무슨일 하게 하고 싶으면 : disposableBean (후처리 작업)
요놈을 implement 받는 단은 Person 혹은 OtherPerson 클래스로 가면 됨
3). implements 후 오버라이드 꼭 받기 그 오버라이드 받은곳에다가 하고 싶은 아이 쓰기 (자동으로 호출되는 애들임)
4). EnvironmentAwaere도 implement 받기 얘는 객체 만들자마자 실행이 됨. 이 아이는 컨테이너가 만들어졌을때 같이 생성되는 환경적인 요인들임
6. 메인함수에서 주입받아 써보기
ㅇ이번에는 컨테이너 만드는 것과 파싱하는것을 분리시키기 위해 Generic으로 컨테이너 먼저 만들어 주기
ㅇ 그다음 만들어놓은 컨테이너에 load라는 함수를 써서 파싱 하기
ㅇ 파싱 한 후에 refresh() 함수를 사용하며 빈을 생성해주기
ㅇ Person 형태의 빈과 OtherPerson 형태의 빈 가지고 오기 가지고 오기
ㅇ 빈소멸시키기
빈의 생명주기 예제2
(OtherPerson 에 만들어보기) - anotation 을 사용해서 임의대로 내가 만들어주기, 메소드 명은 내 맘대로!
1. @PostConstruct - 객체 생성하자마자 호출
2. @PreDestroy - 객체 소멸 전 호출
ㅇ이 상태로 실행하면 당연히 안됨
ㅇ어노테이션을 파싱해줘야지 실행이 됨 / applicationCTX 가서 객체 만들때 어노테이션도 같이 해석해! 라는 걸 달아줘야함
ㅇ applicationCTX 가서 Namespaces 에서 context 추가 해주고, source로 돌아와서 맨 위에 context:annotation-config 달아주기
3. 실행화면
객체 생성할때 싱글톤으로 할 수도 아닐수도 있음
scope 에 singleton 을 쓰거나 아무것도 쓰지 않았을 경우 singleton 으로 디폴트 값이 들어가게됨
예제 3
1. src/main/resources 에 ex3 폴더 생성후 applicationCTX 만들어주기
2. 빈 두개를 만들되 하나는 싱글톤으로 하나는 아닌것으로 만들어 주기
ㅇ 아무것도 쓰지 않거나 싱글톤을 써주면 싱글톤 타입임 (홍씨가족)
ㅇ prototype 을 써주면 싱글톤 아닌 걸로 만들어짐 (김씨가족)
3. src/main/java 밑에 com.lec.ch03.ex3에 SingletonTestmain 만들어 주기
-싱글톤이기 때문에 family1만 바꿨지만 실행시키면 family2까지 같이 바껴있는 것을 확인할 수 있음
ㅇ 하지만 프로토타입으로 만들면 내가 바꾼 애만 바뀐다
- 싱글톤이 아니기 때문에 내가 바꾸고자 하는 애들만 바뀜 즉 family3 만 변동됨
'LANGUAGE > SPRING' 카테고리의 다른 글
SPRING #8 공통기능구현하기 1(AOP) (2) | 2022.07.13 |
---|---|
SPRING #7 외부파일을 이용한 설정 (2) | 2022.07.13 |
SPRING #5 DI 자동설정 (0) | 2022.07.13 |
SPRING #4 DI 개념 및 활용 (0) | 2022.07.12 |
SPRING #2 프로젝트생성하기 (0) | 2022.07.12 |