加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

spring-mvc threadsafe中是否有自动对象?

发布时间:2020-12-15 01:46:53 所属栏目:大数据 来源:网络整理
导读:问题1)根据我的理解,spring会创建单例对象,所以当我有一个像下面的控制器一样的自动装配服务时,会影响线程的安全性. 问题2)如果我在类级别声明一个int类型变量并在控制器或服务中使用它,它会影响线程安全吗? @Controllerpublic class LoginController { @Au

问题1)根据我的理解,spring会创建单例对象,所以当我有一个像下面的控制器一样的自动装配服务时,会影响线程的安全性.

问题2)如果我在类级别声明一个int类型变量并在控制器或服务中使用它,它会影响线程安全吗?

@Controller
public class LoginController {

    @Autowired
    public DaoService daoservice;

    @RequestMapping("/")
    public String getBookInfo() {
        Book book = daoservice.getBookbyId(1L);
        System.out.println(book.getTitle());
        return "welcome";
    }
}


@Service
public class DaoService {

    @Autowired
    public BookRepository BookRepo;

    public Book getBookbyId(Long Id) {
        Book book = BookRepo.findOne(Id);
        return book;
    }

}
最佳答案
问题1:Spring Beans是否安全?
答:没有.
Spring不会为你的bean提供线程安全性. Spring提供不同类型的bean范围,如(Prototype,Singleton等).如果是Prototype,那么每次调用一个新bean时都会创建一个单独的bean创建一次并在应用程序上下文中共享的位置.

如果您正在考虑HTTP请求,那么可能会有2个或更多请求.在每个请求范围中创建一个bean的新实例.所以你可以认为它们在HTTP请求的上下文中是线程安全的,但是它本身并不是真正的线程安全.因为几个线程可以在同一个HTTP请求上下文中共享bean.

问题2:类变量线程安全吗?
答:没有
引自here
所有私有成员变量都是共享的.它们可能是最终的,但这只意味着引用无法更改.任何可变状态都必须同步.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读