了解Spring Singleton在启动时加载实体
问题内容:
我想实现一个功能,在该功能中,我应该在部署时从数据库中加载对象列表。数据库已经完成了相应的实现,正在动态使用。
鉴于我是Spring的新手,所以我尝试了解spring的不同功能,可以利用这些功能来实现此功能。如果我不使用Spring,我会
- 创建一个线程安全的Singleton类
- 通过Servlet生命周期在应用程序加载时加载该类
- 在发出查询之前,加载该Singleton类中的所有内容并覆盖现有的db类以检查此Singleton类。这样,仅当出于某些原因未加载此类时才发出查询。
现在,在春天,我很困惑。我一直在撰写不同的文章,并试图找到一些建议。首先,我应该使用@Component
单例课程吗?弹簧会保护螺纹安全吗?
其次,这个班会成为Service
spring班吗?我必须用它注释@Service
吗?
第三,我应该@PostConstruct
在启动时用来加载此类吗?还是还有其他更好的选择?
问题答案:
这是您的问题的答案:
首先,我应该使用@Component来使类成为单例吗? 弹簧会保护螺纹安全吗?
@Component
用于基于XML的Spring Configuration中的组件扫描,以创建Spring
Bean。Bean将创建任何类的Singleton实例。
其次,这个课程会成为spring的服务课程吗? 我必须用注释@Service
吗?
@Service
只是的专业化而已@Component
。这是完全没问题,如果你继续使用@Service
或@Repository
或替换它们@Component
。
第三,我应该@PostConstruct
在启动时使用该类吗?还是还有其他更好的选择?
@PostConstruct
在bean创建之后将仅运行一次。如果您希望在应用程序首次启动时将数据从数据库加载到缓存等中,则可以使用它。