1

我一直在使用spring作为我的 IOC。它还有一种非常好的方法可以在你的 bean 中注入属性。

现在我正在参与一个新项目,其中 IOC 是Guice。我不完全理解我应该如何使用 Guice 将属性注入到我的 bean 中的概念。

问题:实际上是否可以将原始属性(字符串、整数)注入我的 guice bean。如果答案是否定的,那么也许您知道一些不错的 Java 属性框架。因为现在我想在我的应用程序中使用ResourceBundle类进行简单的属性管理。但是在使用弹簧一段时间后,这对我来说似乎并不严重。

4

3 回答 3

2

这篇 SO 帖子讨论了各种配置框架的使用,以及属性的使用。我不确定它是否完全符合您的需求,但也许您可以在那里找到一些有价值的东西。

于 2010-04-12T10:49:47.560 回答
2

Spring 提供了对 XML 文件中的配置信息的注入。我不希望安装我的软件的人不得不编辑 XML 文件,因此对于纯文本文件中更恰当的配置信息(例如路径信息),我已经回到使用 java.util.Properties因为它易于使用并且非常适合 Spring,如果您使用 ClassPathResource,它允许文件本身的无路径位置(它只需要在类路径中;我把我的放在 WEB-INF/classes 的根目录中) .

这是一个返回填充的 Properties 对象的快速方法:

/**
 *  Load the Properties based on the property file specified 
 *  by <tt>filename</tt>, which must exist on the classpath
 *  (e.g., "myapp-config.properties").
 */
public Properties loadPropertiesFromClassPath( String filename )
        throws IOException
{
    Properties properties = new Properties();
    if ( filename != null ) {
        Resource rsrc = new ClassPathResource(filename);
        log.info("loading properties from filename " + rsrc.getFilename() ); 
        InputStream in = rsrc.getInputStream();
        log.info( properties.size() + " properties prior to load" ); 
        properties.load(in);
        log.info( properties.size() + " properties after load" );         
    }
    return properties;
}

文件本身使用普通的“name=value”纯文本格式,但如果您想使用 Properties 的 XML 格式,只需将 properties.load(InputStream) 更改为 properties.loadFromXML(InputStream)。希望这会有所帮助。

于 2010-04-13T11:37:48.230 回答
1

在 Guice 中注入属性很容易。从文件中读取某些属性后,或者使用Names.bindProperties(Binder,Properties)绑定它们。然后,您可以使用例如@Named("some.port") int port.

于 2010-04-12T13:20:09.657 回答