Spring默认情况下就是单例的
但是可以设置 @Scope 的值为 prototype 将Bean设置为多例的,如下
@Service
@Scope("prototype")
public class UserServiceImpl implements UserService {
}
那么单例Bean是线程安全的吗?
不是
但是
看以下代码
有个成员变量 count ,成员变量是 需要考虑线程安全问题的
userService 是无状态的, 因此无需考虑线程安全问题
getById中的参数id是形参,形参是不需要考虑线程安全的
@Controller
@RequestMapping("/user")
public class UserController {
private int count;
@Autowired
private UserService userService;
@GetMapping("/getById/{id}")
public User getById(@PathVariable("id") Integer id){
count++;
System.out.println(count);
return userService.getById(id);
}
}
因此实际上,单例Bean在某种程度上又是线程安全的文章来源:https://www.toymoban.com/news/detail-549873.html
因此在开发过程中尽量不要定义可修改的成员变量文章来源地址https://www.toymoban.com/news/detail-549873.html
到了这里,关于Spring -- 单例Bean是线程安全的吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!