ThreadLocal 코드 메모
2606 단어 threadLocal
1. 차단기(SpringMVC)
public class SecurityFilter implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
//1) cookie , header ,
//2) , DB,cache .
LoginContext context = new LoginContext(user);
LoginContextHolder.set(context);
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
LoginContextHolder.remove();//
}
}
2. LoginContext.javapublic class LoginContext {
private User user;
public LoginContext(User user){
this.user = user;
}
public boolean isLogin(){
return user == null ? false : true;
}
public User getLoginUser(){
return user;
}
}
3. LoginContextHolder.javapublic class LoginContextHolder {
private static final ThreadLocal<LoginContext> holder = new ThreadLocal<LoginContext>();
public static void set(LoginContext context){
if(context != null){
holder.set(context);
}
}
public static LoginContext getContext(){
return holder.get();
}
public static void remove(){
holder.remove();
}
public static boolean isLogin(){
LoginContext context = getContext();
if(context == null){
return false;
}
return context.isLogin();
}
public static User getLoginUser(){
LoginContext context = getContext();
if(context == null || !context.isLogin()){
return null;
}
return context.getLoginUser();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
스레드, 스레드 풀,threadlocal하나의 스레드 탱크에 두 개의 스레드와 네 개의 작업 (runnable) 을 넣는다.두 라인이 네 개의runnable를 실행합니다.threadlocal의 값은 같은 라인에 공유되며, 다른 작업일 수도 있습니다. 코드...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.