Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Elasticsearch
- 클린코드
- 애자일기법
- 그리디
- 백준
- ES
- Spring
- framework
- spring boot
- 애자일프로그래밍
- 코딩테스트
- Java
- 코드
- cleancode
- database
- 데이터베이스
- 애자일
- API
- 스프링
- 엘라스틱서치
- 프레임워크
- 개발
- JPA
- 알고리즘
- 개발자
- 자바
- Baekjoon
- 그리디알고리즘
- 읽기쉬운코드
- 코딩
Archives
- Today
- Total
튼튼발자 개발 성장기🏋️
#4 : Bean Scope 본문
반응형
생명주기가 그렇다고 한다면 과련 bean의 scope는 어떻게 될까. 개발자가 어떤 공부를 할 때에 scope는 빠짐없이 등장하는 것 같다. scope는 직역하면 "범위"로써 어디까지 영향을 미치는지에 대해 정의를 할 수 있다.
public static void main(String[] args) {
String config = "classpath:appContext.xml";
GenericXmlApplicationContext appContext = new GenericXmlApplicationContext(config);
LoggerUtil logger1 = appContext.getBean("loggerUtil", LoggerUtil.class);
logger1.log();
LoggerUtil logger2 = appContext.getBean("loggerUtil", LoggerUtil.class);
logger2.setPREFIX("[BEAN]");
logger2.setPOSTFIX("[SCOPE]");
logger1.log();
appContext.close();
}
logger1과 logger2 따로 만들어서 logger2는 setter를 이용해 PREFIX와 POSTFIX를 변경했다. 그 이후에 logger1을 이용해 log()를 호출하였을 뿐 특이사항은없다.
이게 무슨 일인가? 난 분명 logger2를 변경했으나 logger1이 변경되었다. 그 이유는 다음과 같다.
xml에 만들어 놓은 loggerUtil bean은 컴퓨터 메모리 어딘가에 있을 것이다. logger1과 logger2는 그 메모리를 바라보고 있는 것이다. (C언어에서의 포인터가 떠오른다.) 다시말해서 logger1 혹은 logger2 같은 메모리 상의 loggerUtil을 보고 있으므로 수정이 된다고 하면 함께 수정이 되는 것이다.
xml에서 scope를 주는 방법은 다음과 같다.
<bean id="loggerUtil" class="ga.dotori.util.LoggerUtil" scope="singleton">
</bean>
scope의 default가 singleton임을 참고하여 다른 scope를 알아보자.
반응형
'Framework > spring' 카테고리의 다른 글
#6 : AOP (Aspect Oriented Programming) (0) | 2020.05.03 |
---|---|
#5 : bean setting (0) | 2020.05.02 |
#3 : Container Life Cycle (0) | 2020.05.01 |
#2 : DI 활용 (0) | 2020.05.01 |
#1 : spring의 핵심 DI(Dependency Injection) (0) | 2020.04.30 |