Подтвердить что ты не робот

Как читать файл свойств в проекте spring?

Перед отправкой этого Вопроса, я google, чтобы получить Свойства из проекта Spring (его НЕ-веб-проект). Я смущен, поскольку каждый говорит о application-context.xml и имеет конфигурацию, подобную

Тем не менее, я работаю над обычным Java-проектом с Spring (NO Web-приложение и тому подобное). Но я хотел бы получить некоторые общие свойства из файла свойств и их необходимо использовать в JAVA файле. Как добиться этого, используя Spring/Spring Annotations?

Где я должен настроить файл myprops.properties в моем проекте и как вызывать через spring?

Мое понимание - application-context.xml используется ТОЛЬКО для веб-проектов. Если нет, как мне настроить этот application-context.xml, так как у меня нет web.xml для определения application-context.xml

4b9b3361

Ответ 1

Вы можете создать контекст приложения на основе XML, например:

ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");

если xml файл находится на пути к вашему классу. Кроме того, вы можете использовать файл в файловой системе:

ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");

Дополнительная информация доступна в Spring справочных документах. Вы также должны зарегистрировать завершающий вызов, чтобы обеспечить изящное завершение работы:

 ctx.registerShutdownHook();

Затем вы можете использовать PropertyPlaceHolderConfigurer, чтобы извлечь свойства из файла .properties и вставить их в свой beans:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="classpath:com/foo/jdbc.properties"/>
</bean>

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

Наконец, если вы предпочитаете конфигурацию на основе аннотаций, вы можете использовать аннотацию @Value для вставки в вас свойств beans:

@Component
public class SomeBean {

    @Value("${jdbc.url}") 
    private String jdbcUrl;
}

Ответ 2

Вам не нужно использовать Spring. Вы можете читать с помощью простой java:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));

Ответ 3

Как и в случае с Spring 4, вы можете использовать аннотацию @PropertySource в классе Spring @Configuration:

@Configuration
@PropertySource("application.properties")
public class ApplicationConfig {

    // more config ...
}

Если вы хотите иметь свою конфигурацию вне своего пути к классам, вы можете использовать префикс file::

@PropertySource("file:/path/to/application.properties")

В качестве альтернативы вы можете использовать переменную окружения для определения файла

@PropertySource("file:${APP_PROPERTIES}")

Где APP_PROPERTIES - это переменная среды, которая имеет значение местоположения файла свойств, например. /path/to/application.properties.

Пожалуйста, прочитайте мой блог Spring @PropertySource для получения дополнительной информации о @PropertySource, его использовании, о том, как значения свойств могут быть переопределены и как можно указать дополнительные источники свойств.

Ответ 4

Вы можете понять, как ваш проект будет использоваться во всем приложении? Если ваш проект используется как путь сборки для веб-приложения, а конфигурация в вашем проекте достигается посредством аннотаций spring, поэтому, без сомнения, вы недоумеваете, как добавить файл application.xml. Мое предложение - вы должны объявить ребят, которые будут использовать ваш проект, рассказать им, что вам нужно, и вам просто нужно добавить @Value("${valuename}") в свой код.