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