我想要实现在service类中,定义一次通过ThreadLocal类封装的token令牌获取的id值变量,以便我在接下来这个类中任何方法里使用它,而无需进行每个方法都使用一次ThreadLocal,但是老是map为null,我想到的是使用静态代码块在类加载时机就定义好这个id,但是爆了map is null,如果要是将静态代码块中的挪到每个类方法中就可以了,但是我觉得那样比较麻烦,篇幅还长,我对类的声明周期或者其他什么都不了解,这个static还是gpt教给我的
package com.codeCart.service.impl;
import com.codeCart.mapper.ArticleMapper;
import com.codeCart.pojo.Article;
import com.codeCart.service.ArticleService;
import com.codeCart.util.ThreadLocalUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class ArticleServiceImpl implements ArticleService {
private static Integer id;
static {
Map<String,Object> map = ThreadLocalUtils.get();
id = (Integer) map.get("id");
}
@Autowired
private ArticleMapper articleMapper;
/**
* @param article 根据参数查询
* @return
*/
@Override
public List<Article> selectArticle(Article article) {
article.setId(id);
return articleMapper.selectArticle(article);
}
/**
* @param article
*/
@Override
public void addArticle(Article article) {
article.setId(id);
articleMapper.addArticle(article);
}
/**
* @param article
*/
@Override
public void updateArticle(Article article) {
article.setId(id);
articleMapper.updateArticle(article);
}
/**
* @param title
*/
@Override
public void deleteArticle(String title) {
articleMapper.deleteArticle(title);
}
}