【问题标题】:How to declare and use global variables?如何声明和使用全局变量?
【发布时间】:2016-10-19 21:03:27
【问题描述】:

我有一个控制台应用程序。我想从数据库中读取一些配置设置。这些设置应该存储在全局或会话变量中,以便 我可以在整个应用程序中使用该变量, 我该如何实施?有什么方法?我需要使用哪些渠道?以及应该如何存储有效载荷?

【问题讨论】:

  • 请提供更多信息,例如您使用的数据库。
  • 我可以使用任何数据库,我的数据库部分运行良好,没有问题。只关心如何在全局变量中保留行,就像我们在 Web 应用程序中有会话一样。
  • 在应用程序启动时,您可以加载数据(一些表行)并将它们存储在静态变量中......这将在整个应用程序生命周期中可用
  • 我知道静态变量,但我在这里询问的是 spring 集成和有效负载
  • 请参考这个网址来实现。 stackoverflow.com/a/49494004/8392258

标签: spring-integration


【解决方案1】:

完全不清楚您的意思,但是您可以将 Map 对象声明为 @Bean(或 <bean/>)并在初始化期间加载它。

然后,您可以通过 @Autowired 或通过 SpEL 在集成组件中的表达式中直接在组件中引用它:@mapBean['foo']

【讨论】:

  • 感谢 Russel,我如何确定地图会在初始化阶段填充?因为地图应该在任何对象之前填充?
  • 您可以使用BeanPostProcessor 确保它是Ordered,它的顺序较低,因此它会在上下文生命周期的早期被调用。但是,要非常小心您在那里访问哪些其他 bean,否则可能会导致 bean 被提前实例化而导致问题。
  • 如果添加 BeanPostProcessor ,它会在每个 bean 之后执行,但我担心我想执行一个初始化块,以便它可以填充一些值,如静态块。
  • 你可以忽略额外的调用,或者使用BeanFactoryPostProcessor
猜你喜欢
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
相关资源
最近更新 更多