как прочитать файл свойств в spring project?
прежде чем опубликовать этот вопрос, я google, чтобы получить свойства из Spring project(его не веб-проект). Я смущен, поскольку все говорят о применении-контексте.xml и имеют конфигурацию как
однако я работаю над обычным Java-проектом с Spring (без веб-приложения и тому подобного). Но я хотел бы получить некоторые общие свойства из файла свойств, и это необходимо использовать в файле JAVA. Как достичь этого с помощью Spring / Spring Аннотации?
где я должен настроить myprops.свойства файла в моем проекте и как вызвать весну?
мое понимание-это контекст приложения.xml используется только для веб-проектов. Если нет, как я должен настроить это приложение-контекст.xml, поскольку у меня нет интернета.xml для определения контекста приложения.в XML
4 ответов
вы можете создать контекст приложения на основе XML, например:
ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");
если xml-файл находится на пути к вашему классу. Кроме того, вы можете использовать файл в файловой системе:
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");
дополнительная информация доступна в Spring reference docs. Вы также должны зарегистрировать завершение работы крючком для обеспечения изящного выключения:
ctx.registerShutdownHook();
Далее, вы можете использовать PropertyPlaceHolderConfigurer для извлечения свойства '.файл свойств и ввести их в ваши бобы:
<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
аннотация для ввода свойств в вас бобы:
@Component
public class SomeBean {
@Value("${jdbc.url}")
private String jdbcUrl;
}
вам не нужно использовать Spring. Вы можете читать с простой java, как это:
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));
С весны 4, Вы можете использовать @PropertySource аннотация весной @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
.
пожалуйста, прочитайте мой пост в блоге Весна @PropertySource подробнее о @PropertySource
, его использование, как можно переопределить значения свойств и как можно указать дополнительные источники свойств.
вы можете выяснить, как ваш проект будет использоваться во всем приложении? Если ваш проект используется в качестве пути сборки для веб-приложения, а конфигурация в вашем проекте достигается с помощью аннотаций spring, поэтому вы, несомненно, озадачены тем, как добавить . Я предлагаю вам объявить парней, которые будут использовать ваш проект, сказать им, что вам нужно, и вам просто нужно добавить @Value("${valuename}")
в коде.