anu*_*u l 7 java spring applicationcontext spring-boot
我想在 Spring Boot 应用程序的应用程序上下文中存储一个特定的变量(字符串或对象)。但我不想使用 xml 或属性文件来存储它。
将有一个函数将数据存储在应用程序上下文中。我应该能够检索它、修改它、删除它或添加更多数据。
基本上我想在初始化完成后将数据存储在应用程序上下文中。
如果您创建一个类并@Configuration在其上添加注解,并使用@Bean注解声明一些 bean ,它们将成为应用程序管理的 bean。
@Configuration
public class ConfigurationClass {
@Bean("myString")
public String getString() {
return "Hello World";
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以从代码中的任何位置调用AnnotationConfigWebApplicationContext.getBean("myString")以获取 bean。
现在可能存在并发问题(如davidxxx 所述)。为此,您可以使用SimpleThreadScope. 查看此链接以了解如何将其注册到应用程序上下文以及放置该注释的位置(或谷歌它)。
或者,如果您不想处理这个问题,那么 a@Scope("request")应该会有所帮助。@Scope("request")将为每个新传入请求创建bean,因此它的线程安全性得到保证,因为每次新请求传入时都会创建它。
一般来说,您应该避免创建有状态服务。
将应用程序数据存储在服务器内存中使得弹性、自主性以及分布式和可扩展性变得更加困难。
此外,Spring Bean 并不是被设计为有状态的。
如果这样做,您可能会遇到竞争条件而没有所需的同步。
关于您的需求,如果您确实希望在启动时拥有有状态服务,请创建您自己的单例实例并同步应该是线程安全的方法。
然后从任何地方访问它。
| 归档时间: |
|
| 查看次数: |
12487 次 |
| 最近记录: |