Каркас свойств в Java-приложениях - PullRequest
1 голос
/ 12 апреля 2010

Я уже некоторое время использую пружину в качестве МОК. У него также есть очень хороший способ добавить свойства в ваши бобы.

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

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

Ответы [ 3 ]

2 голосов
/ 13 апреля 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). Надеюсь, это поможет.

2 голосов
/ 12 апреля 2010

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

1 голос
/ 12 апреля 2010

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

...