Чтение файла свойств из прилагаемого файла - PullRequest
1 голос
/ 11 апреля 2019

Я пытаюсь создать анализатор аннотаций, который читает файл свойств. Структура выглядит так:

 - annotationParserModule
    - declaration of interace
    - annotationParser

теперь мое приложение имеет такую ​​структуру:

 - main
   - java
   - resources
      - .properties file

Я включил annotationParserModule через maven, так что, если я не ошибаюсь, в мой проект включается фляга.

Однако мне нужно прочитать файл свойств вне фляги, предоставленной annotationParserModule, возможно ли что-то подобное? Если да, то как правильно этого достичь?

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Если ресурс, который вы хотите прочитать, включен в classpath вашего приложения (например, внутри jar, в папке WEB-INF/lib, папке, переданной командой -cp to java и т. Д.), Выможно прочитать файл, используя метод getResourceAsStream класса Class.

Предоставление примера для вашего дела с папками, такими как:

- main
   - java
   - resources
      - yourconfig.properties

В вашем коде YourAnnotationParser вы можете иметь:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("yourconfig.properties");

Если файл является вложенным:

- main
   - java
   - resources
      - iamafolder
          - yourconfig.properties

Итак:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("iamafolder/yourconfig.properties");

Кстати, это очень упрощенный ответ, код работает по общему сценарию, то, что он делает за кулисами, сложнее, чем «чтение файла»вне jar ", но чтобы понять его полностью, вам нужно посмотреть, как работают загрузчик классов java и classpath.

Если файл находится за пределами пути классов java, вы можете использовать класс File или URL один для чтения содержимого.

0 голосов
/ 11 апреля 2019

В вашем applicationcontext.xml вы можете добавить bean-компонент для чтения файла свойств из jar

<bean id="com.mybean"
    class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
        <list>
            <value>classpath:/resource.properties</value>
        </list>
    </property>
</bean>

, и этот идентификатор будет ссылаться на другой bean-компонент

<bean id="com.mybean1">
    class="com.dependent.jar.classname">
    <property name="properties" ref="com.mybean" />
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...