java - 管理单例 Bean

标签 java spring

我正在学习 spring,在我的第一个应用程序中,我有不同类型的 bean(@Repository,@Service)。现在我了解到这些 bean 的默认范围是单例。

我的情况如下,我有两个服务,我在其中注入(inject)相同的 Dao。

@Service
public class MyFirtsServiceImpl implements MyFirtsService{

    @Autowired
    UserDao userDao

}

@Service
public class MySecondServiceImpl implements MySecondService{

    @Autowired
    UserDao userDao

}  

@Repository
public class UserDao {

    //methods to manage the persistence

}  

现在我对这个情况有些疑问。作为 userDao 一个单例 bean,那么注入(inject)到两个服务中的 UserDao 实例是相同的吗?容器如何管理这个?

最佳答案

首先,单例设计模式的含义是每个应用程序只有一个实例,并且Spring容器管理单例设计模式。

当一个 bean 是单例时,只会管理该 bean 的一个共享实例,并且对具有与该 bean 定义匹配的 id 或多个 id 的 bean 的所有请求都将导致 Spring 容器返回该一个特定的 bean 实例。

换句话来说,当您定义一个 bean 定义并将其范围限定为单例时,Spring IoC 容器将创建由该 bean 定义定义的对象的一个​​实例。这个单个实例将存储在此类单例 bean 的缓存中, 并且对该命名 bean 的所有后续请求和引用都将导致返回缓存的对象。

如需更多帮助,请访问here

关于java - 管理单例 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24587771/

相关文章:

java - Jsoup 清理我的 html

java - Spring RabbitTemplate 执行方法可见性

java - 映射 Spring 形状

java - 从 Spring Web 服务请求获取 XML

java - Spring DBCP 连接池 |配置重试次数

mysql - 在 MySQL 数据库中正确创建和持久化

java - 使用ant项目的jenkins集成在svn上生成jar

java - 陷入无限 While 循环(使用 switch 语句)

java - 如何在mapReduce Hadoop框架中对值(及其相应的键)进行排序?

java - IntelliJ 找不到 google-cloud-storage 类