写点什么

Spring 单例和静态方法

作者:hasWhere
  • 2022-12-24
    河南
  • 本文字数:350 字

    阅读完需:约 1 分钟

前景

以前理解:

单例就是在上下文中实例化一次。

多例就是在上下文中实例化多次。

静态方法就是增加修饰符 static。

后来接触到多线程开发后,发现单例并不是线程安全的。而 springmvc 开发中,controller 默认是单例,又天然是支持多线程的。

数据库交互又是通过连接池完成的,明显不是单例,如果是单例的话岂不是变成单线程了。

怀着这样的疑惑网络上搜索了下,总是模棱俩可,沉下下来,阅读源码和实验后豁然开朗。


正文

单例

@controller @Service @Repository 是否默认是单例,如何实现的

  1. 上述 3 个最终注解都是 @Component。

  2. 创新 bean 时的确是单例的


@Repository 中和数据库交互部分 JdbcTemplate 是通过 java 中的 ThreadLocal 来实现线程安全的。


线程安全

  1. 如果是静态变量,静态方法无法是否开启多例都是只有一份是非线程安全的

  2. 如果非静态变量,开发多例情况下是线程安全的。

发布于: 刚刚阅读数: 3
用户头像

hasWhere

关注

间歇性努力的学习渣 2018-04-20 加入

通过博客来提高下对自己的要求

评论

发布
暂无评论
Spring单例和静态方法_hasWhere_InfoQ写作社区