gpt4 book ai didi

java - 理解spring singleton在启动时加载实体

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:24 24 4
gpt4 key购买 nike

我想实现一个功能,在部署时,我应该从数据库加载对象列表。该数据库已经完成了相应的实现,正在运行中使用。

鉴于我是 Spring 的新手,我试图了解 spring 的不同功能,我可以利用这些功能来实现此功能。如果我不使用 Spring,我会用

  • 创建了一个线程安全的单例类
  • 通过 servlet 生命周期在应用程序加载时加载该类
  • 加载该单例类中的所有内容并覆盖现有的数据库类以在发出查询之前检查该单例类。这样,只有在由于某种原因未加载此类时才会发出查询。

现在, Spring ,我很迷茫。我一直在阅读不同的文章并试图找到一些建议。首先,我应该使用 @Component 来创建单例类吗? Spring 会注意线程安全吗?

其次,这个类会是 spring 的 Service 类吗?我必须用 @Service 注释它吗?

第三,我应该使用@PostConstruct 在启动时加载这个类吗?或者有其他更好的选择?

最佳答案

以下是您问题的答案:

首先,我应该使用@Component 使类成为单例吗? Spring 会负责线程安全吗?

@Component 用于基于 XML 的 Spring 配置中的组件扫描以创建 Spring Bean。 Bean 将创建任何类的单例实例。

其次,这个类会是 spring 的服务类吗?我必须用 @Service 注释吗?

@Service 只不过是 @Component 的特化。如果您继续使用 @Service@Repository 或将它们替换为 @Component 就完全没问题。

第三,是否应该在启动时使用@PostConstruct来加载这个类?还是有其他更好的选择?

@PostConstruct 将在创建 bean 后仅运行一次。如果您想在应用程序首次启动时将数据从数据库加载到缓存等,则可以使用它。

关于java - 理解spring singleton在启动时加载实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35160524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com