許可權管理系統 ThreadLocal的使用:在同一執行緒中獲取使用者資訊
ThreadLocal的使用:在同一執行緒中獲取使用者資訊
/*****************************************************************************************/
public class ThreadUtils implements Runnable {
private static class ThreadUtilsHolder {
private static final ThreadUtils INSTANCE = new ThreadUtils();
}
private ThreadUtils() {
}
public static final ThreadUtils getInstance() {
return ThreadUtilsHolder.INSTANCE;
}
private User user;
private final ThreadLocal<User> userId = new ThreadLocal<User>() {
@Override
protected User initialValue() {
return user;
}
};
public void setUserId(User user) {
this.user = user;
}
public User getUserId() {
return userId.get();
}
@Override
public void run() {
}
}
/*********************************************************************************************************/
登入時將使用者資訊儲存在ThreadLocal中,並啟動執行緒
ThreadUtils Tutils = ThreadUtils.getInstance();
Thread thread = new Thread(Tutils);
Tutils.setUserId(loginuser);
thread.start();
在切面中獲取執行緒中的使用者資訊
ThreadUtils Tutils = ThreadUtils.getInstance();
public User getUser() {
User user = Tutils.getUserId();
return user;
}