Как читать файл свойств в проекте 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
Ответы
Ответ 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}")
в свой код.