06-17 10:53
Notice
Recent Posts
Recent Comments
반응형
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

(주) 망나니 힘집

ThreadLocal 로그인 정보 저장하기 실패 본문

스펙도 쌓니

ThreadLocal 로그인 정보 저장하기 실패

군포망나니 2025. 4. 2. 13:26
반응형

로그인 정보를 저장해두고 여기저기 로그인 아이디를 가져올 수 없을까? 라는 생각에 여러 방안을 두고 생각을 해보았다. 

현재 세션을 쓰기 때문에 여기저기 넘겨야 하는 상황이 매우 불편했다. 

 

1. 스프링 시큐리티 (안 쓰기에 PASS) 

2. H2 인메리 데이터베이스로 현재 로그인을 임시 저장해두고 XML 만 수정하는 방법 (  H2 설치가 안 되어 PASS) 

3. 현재 쓰는 DB2 에도 2와 같이 시행 ( 메모리 낭비가 심할 것 같고 페이지 재접속 시에 문제가 있을 것 같아 PASS)

4. ThreadLocal (하.. 우리가 쓰는 구조와 좀 달라서 PASS ) 

 

이제 싱글톤 패턴을 구현해보려고 한다. 과연 될까..? ㅋㅋㅋ 

 

일단, Login 서비스단에서 idLogin 을 저장하기 때문에  

 

 // ThreadLocal을 사용하여 로그인 정보를 저장
    private static ThreadLocal<OSession.LoginInfo> local = new ThreadLocal<>();

 

public void check(String id) {
 

System.out.println("-------1. 쓰레드 값 저장 --------"); 
  //ThreadLocal 활용 - 쓰레드 값 저장 
ThreadLocal<LoginInfo> local = new ThreadLocal<>();
 
System.out.println("-------2. LoginInfo 객체 생성 --------"); 
// LoginInfo 객체 생성 (여기서는 가정으로 idLogin이 LoginInfo 객체라면)

// OSession 객체 생성
OSession osess = new OSession();  
OSession.LoginInfo idLogin = osess.new LoginInfo(id);


System.out.println("-------3. 값 할당 --------"); 
local.set(idLogin);
 
System.out.println("------ 4. 값 추출 --------");  

System.out.print(local.get().getIdLogin()); 
}

 

이렇게 코드를 작성을 하였는데 값이 잘 가져왔다. 이제 이걸 다른 클래스 파일에서 읽기만 하면 된다. 

 

그렇게 해주기 위해선 ThreadLocal 함수가 더 필요하다. 


 public static ThreadLocal<OSession.LoginInfo> getThreadLocal() {
        return local;
    }

작성을 해주고  다른 파일에는 Login 서비스의 객체를 불러온다. 

LoginS loginS = new LoginS(); 

 

 // LoginS 클래스에서 ThreadLocal 값을 가져옴
ThreadLocal<OSession.LoginInfo> local = LoginS.getThreadLocal();
        
// ThreadLocal에서 로그인 정보 추출
OSession.LoginInfo loginInfo = local.get();
        
System.out.println(loginInfo);  // null 이 뜨더라 
  

 

이렇게만 하면 잘 될 줄 알았지만 그 놈의 같은 쓰레드.... 나는 ThreadLocal() 만 해주면 잘 읽어올 줄 알았건만 그러지 않았다. 

 

결국은 다른 MAIN 클래스에서 LoginS 와 위 클래스를 가져와서 같은 쓰레드 내에서 실행해야 id 값이 잘 가져온댄다... 

 

그래서 ! 결국 싱글톤 패턴 구현으로 변경.. 

 

전 개발 핵 초보이기에 좋은 방법이나 지적할 부분 있다면 언제나 환영입니다 !! 

반응형