小编xcu*_*cut的帖子

从bean强制关闭Spring的最佳方法是什么?

我的应用程序使用Spring DefaultMessageListenerContainer来处理传入的消息.应用程序的主要方法已经注册了一个关闭钩子.

问题是:强制应用程序上下文关闭的最佳方法是什么?

如果我RuntimeException在消息监听器中抛出一个,它由容器处理,而不是传递.调用System.exit是否可以接受?我是否会将其传递ApplicationContext给需要关闭的每个班级,以便我可以打电话close()给它?

java spring

7
推荐指数
1
解决办法
5373
查看次数

Rails应用程序配置访问速度慢 - 为什么?

我们总是习惯将应用程序配置放入环境文件中.这对生产管理没有好处,所以现在我们通过初始化程序加载它:

# myinitializer.rb
ApplicationConfig = YAML.load_file("#{Rails.root}/config/application/default.yml").symbolize_keys()
Run Code Online (Sandbox Code Playgroud)

一旦我们开始访问配置ApplicationConfig,应用程序测试性能就会变得更糟.一个rspec套件从4秒减少到30秒.

在我们的应用程序控制器中,我们需要使用a执行一些操作before_filter,其工作方式如下:

before_filter :extra_control

def extra_control
  if ApplicationConfig.some_flag
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

声明一个指向ApplicationConfig完全恢复性能的变量:

config = ApplicationConfig

def extra_control
  if config.some_flag
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

为什么?为什么通过全局变量访问它会破坏性能?我们在视图和其他控制器的整个代码库中执行此操作.我们是否需要以不同方式执行此操作,例如将实例变量注入所有控制器?

编辑:我们确实验证了从YAML加载配置的代码无论哪种方式都被调用一次,因此重复加载似乎不是根本原因.

编辑:事实证明这是一个由设置变量引起的错误,该变量被加载为字符串而不是布尔值,导致应用程序进入测试睡眠模式:(对不起,感谢您的尝试.我生命的3天我永远不会回来!

app-config ruby-on-rails

7
推荐指数
1
解决办法
404
查看次数

如何在HQL/GORM中表达"动态列表中的值"?

对于grails应用程序,我需要找到一个对象列表,其中"attr"是动态字符串列表中的一个.实际的HQL查询更复杂,但我需要帮助的是这个:

def result = MyObject.executeQuery("select o from MyObject as o where o.attr in :list",
    [list: aListOfStrings])
Run Code Online (Sandbox Code Playgroud)

这显然不是正确的语法,Grails将它作为"意外令牌"抛回给我,作为:list参数.

这在HQL中是否可行?我并不特别想在代码库的这一部分使用Criteria.

grails hql grails-orm

6
推荐指数
1
解决办法
9227
查看次数

标签 统计

app-config ×1

grails ×1

grails-orm ×1

hql ×1

java ×1

ruby-on-rails ×1

spring ×1