有没有办法在没有xml或属性文件

时间:2017-04-23 18:49:15

标签: java spring spring-boot applicationcontext

我想在spring boot应用程序的应用程序上下文中存储一个特定的变量(String或Object)。但我不想使用xml或属性文件来存储它。

将有一个函数将数据存储在应用程序上下文中。我应该能够检索,修改,删除或添加更多数据。

基本上我想在初始化完成后将数据存储在应用程序上下文中。

2 个答案:

答案 0 :(得分:1)

如果您创建一个类并在其上添加@Configuration注释。并声明一些带有@Bean注释的bean,它们不会成为应用程序管理的bean吗?

@Configuration
public class ConfigurationClass {

@Bean("myString")
public String getString() {     
    return "Hello World";
}

然后在代码中的某处,您可以调用AnnotationConfigWebApplicationContext.getBean("myString")来获取您的bean。

现在可能存在并发问题(如davidxxx所述)。为此你可以SimpleThreadScope。查看此link以了解如何将其注册到应用程序上下文以及放置该注释的位置(或谷歌)。

或者如果您不想处理,那么@Scope("request")应该会有所帮助。带有@Scope("request")的bean将被创建用于任何新的传入请求,因此它的安全线程是安全的,因为它是在每次有新请求进入时创建的。

答案 1 :(得分:0)

作为一般方法,您应该避免创建有状态的服务 将应用程序数据存储在服务器内存中会使其更难以恢复,自主但也可以分布和扩展。

此外,Spring Beans并非设计为有状态 如果这样做,您可能会遇到没有所需同步的竞争条件。

关于您的需求,如果您想在启动时真正拥有有状态服务,请创建您自己的单例实例并同步应该是线程安全的方法。
然后从任何地方访问它。