【发布时间】:2012-10-20 21:52:38
【问题描述】:
当我的 Grails 应用程序启动时,我还会在后台启动 Spring Integration and Batch 进程。我想在 Config.groovy 文件中存储一些数据库连接属性,但是如何从集成/批处理过程中使用的 Java 类访问它们?
我找到了这个帖子:
Converting Java -> Grails ... How do I load these properties?
建议使用:
private Map config = ConfigurationHolder.getFlatConfig();
后跟类似:
String driver = (String) config.get("jdbc.driver");
这实际上工作正常(从 Config.groovy 正确加载属性)但问题是 ConfigurationHolder 在被弃用之后。我发现处理该问题的任何线程似乎都是 Grails 特定的,并建议使用依赖注入,就像在这个线程中一样:
How to access Grails configuration in Grails 2.0?
那么有没有不推荐的方法来从 Java 类文件中访问 Config.groovy 属性?
【问题讨论】:
-
accepted answer of the question you linked to中的第二种方法有什么问题?
-
嗨蒂姆,为回复干杯。我将我的 java 类作为 bean 放入资源文件中(具有 grailsApplication 的属性和 grailsApplication 的引用),并将以下行添加到我的类中:private GrailsApplication grailsApplication;用 getter 和 setter。但是当我尝试通过 ConfigObject config = grailsApplication.getConfig(); 访问它时它似乎是空的并且错误了。任何想法我做错了什么?谢谢
-
你想从哪里访问它?您不能在构造函数中使用依赖注入的bean,例如,您需要声明一个用
@PostConstruct注释的方法并将需要grailsApplication的逻辑放在那里,或者使用构造函数参数注入而不是setter注射。 -
嗨,Ian,我不想在构造函数中访问它,只是在一个名为 connect 的单独方法中访问它,该方法由 Spring Integration 组件之一调用。文件配置文件包含我需要的数据库详细信息/凭据。所以我上面贴的那行就用在那里了。
-
Spring 集成组件是从 Spring 上下文中获取您的类的实例还是构建自己的实例?依赖注入仅适用于前一种情况。
标签: java grails configuration groovy