반응형
남이 짜놓은 코드를 이어받아 보고 있는데, 스프링 컨트롤러에 전역변수들이 나옵니다.
일반적으로 이런식으로 코드 작성을 하지 않아서 깊게 생각해 보지 않았는데, thread safe 문제 부터 떠오릅니다.
테스트 코드로 테스트 해보았습니다.
테스트 코드
@Controller
public class TestController {
// num이라는 전역변수는 thread safe한가?
int num = 0;
@RequestMapping("/test.do")
public String selectMode(HttpServletRequest request, ModelMap model) throws Exception{
model.addAttribute("num", num++);
return "test";
}
}
결과
페이지 호출할 때마다 num이라는 값은 증가 합니다.
다른 사람이 접속해서 호출해도 num은 이전 숫자에서 이어서 증가 합니다.
스프링 빈 전역변수는 thread safe 하지 않습니다.
저런식으로 코드 작성하면 안됩니다.
좀 더 설명
전역변수는 Heap 영역, 지역변수는 Stack 영역
반응형
'개발' 카테고리의 다른 글
스프링 mybatis 폐쇄망 dtd 문제 (0) | 2022.11.29 |
---|---|
HSTS 오류 - Strict-Transport-Security 헤더에 오류가 감지됨 (0) | 2022.08.06 |
자바스크립트 유니코드 정규식 (0) | 2022.07.09 |
img 태그 adblock에 탐지되게 하는 방법 (0) | 2021.12.19 |
React spreadsheet 조사 (0) | 2021.10.30 |