Фреймворк свойств в приложениях Java

Некоторое время я использую spring в качестве своего IOC. У него также есть очень хороший способ добавления свойств в ваши beans.

Сейчас я участвую в новом проекте, где МОК - Guice. Я не совсем понимаю концепцию того, как мне вводить свойства в мои bean-компоненты с помощью Guice.

Вопрос: действительно ли возможно ввести необработанные свойства (строки, целые числа) в мои guice beans. Если ответ отрицательный, то, возможно, вы знаете какую-нибудь красивую платформу свойств для java. Потому что прямо сейчас я хотел использовать ResourceBundle класс для простого управления свойствами в моем приложении. Но после того, как я какое-то время использовал пружину, мне это показалось недостаточно серьезным.


person Roman    schedule 12.04.2010    source источник


Ответы (3)


Ввести свойства в Guice легко. После чтения некоторых свойств из файла или наоборот, вы связываете их с помощью Names.bindProperties (Binder, Properties). Затем вы можете ввести их, используя, например, @Named("some.port") int port.

person ColinD    schedule 12.04.2010

в этом сообщении SO обсуждается использование различных структур конфигурации, а также использование свойств. Я не уверен, что это именно то, что вам нужно, но, возможно, вы найдете там что-то ценное.

person Steen    schedule 12.04.2010

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», но если вы хотите использовать XML-формат Properties, просто измените properties.load (InputStream) на properties.loadFromXML (InputStream). Надеюсь, это поможет.

person Ichiro Furusato    schedule 13.04.2010
comment
Думаю, вы неправильно поняли мой вопрос, но спасибо за код и ответ. - person Roman; 15.04.2010