spring的controller和service是否线程安全?

先上代码

 public String deleteNews(Integer id){
        String ret;
        logger.debug("mydebug news id:"+id);
        News news=newsService.selectNewsById(id);
        Types types=news.getTypesEnti();
        if (types.getOnechildOnly()==1){
            ret=ReturnFormat.retParam(2,null);
            return ret;
        }else{
            int no=newsService.deleteNewsById(id);
            if (no>0){
                ret= ReturnFormat.retParam(0,null);
            }else{
                ret=ReturnFormat.retParam(1,null);
            }
            return ret;
        }
    }

我先传一个types.getOnechildOnly()==1的news ID,这时是正常的
然后我再传一个types.getOnechildOnly()!=1的ID,这个时候也是正常的,
但是当我再重复1和2步骤时,newsService.selectNewsById(id);有时候会出现
空值情况.我打印了下,好像他删除的还是前一个已经删除的id,这种情况怎么处理?

线程安不安全取决于你怎么用,反正记住一点,共享资源不要定义全局的变量,只定义常量和注入的bean,这样基本不会有线程安全问题的出现。

通常都是 调用 controller 和service里面的方法, 方法是在虚拟机栈中执行的 每个线程都有各自的栈空间, 所以没有线程安全问题,
但是如果在 controller类中 定义了 属性, 并且在方法中使用, 这个时候就存在线程安全问题了.因为多个线程共享 controller的对象实例的属性.