Аннотация в Spring для чтения properties

 
 
 
Сообщения:67
Для того, чтобы читать данные из application.properties, которые находятся в classpath, для этого можно использовать анноатцию @Value,

    @Value("${jwt.token.secret}")
    private String secret;
 
    @Value("${jwt.token.expired}")
    private long validityInMilliseconds;



а также использовать

public Environment env;
 
    @Autowired
    public DaoConfiguration(Environment env) {
        this.env = env;
    }
 
.....
 
@NotEmpty
        String propertyUserName = env.getProperty("jdbc.username");


А если файл application.properties, находится в WEB-INF, как можно с помощью аннотаций прочитать данные из файла
 
 
Сообщения:457
никак полагаю, сделайте так чтобы он был в WEB-INF/classes, и все будет работать автоматом (только @Value добавляй)
Изменен:14 мая 2019 19:04
 
 
Сообщения:67
keekkenen:
сделайте так чтобы он был в WEB-INF/classes


это как ?
 
 
Сообщения:457
в корень WEB-INF никакие файлы не должны размещаться..
каким образом при сборке артефакта в проекте копируются ресурсы ?
 
 
Сообщения:67
keekkenen:
в корень WEB-INF никакие файлы не должны размещаться..


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

А вот каталог java, вот он не должен быть подвержен вмешательству

WEB-INF - это серверная часть и она не доступна пользователю, то есть клиенту, но зато администратор может работать с веб-ресурсами здесь сводобно, модифицируя как ему нужно
 
 
Сообщения:9895
- В целом в WEB-INF ресурсы можно размещать, но это не удобно для тестирования (потому как они не находятся в classpath). К таким ресурсам нужно обращаться так: /WEB-INF/application.properties.
- Как правило все же ресурсы кладут в src/main/resources и тогда они копируются в WEB-INF/classes. И доступны через обычный classpath:/application.properties.

В обоих случаях Tomcat распаковывает war файл и эти файлы доступны для редактирования. Но их никто обычно не редактируют. Если администраторам нужно задать свойства, то это делают через переменные окружения или JNDI (в localhost/Catalina/app.xml).
 
 
Сообщения:67
Староверъ:
Как правило все же ресурсы кладут в src/main/resources и тогда они копируются в WEB-INF/classes. И доступны через обычный classpath:/application.properties.


Такого представления у меня не было, спасибо за информацию.

Староверъ:
то это делают через переменные окружения или JNDI (в localhost/Catalina/app.xml).


Задача такая, пишется веб-приложение, но заказчик ставит условие:
- необходимо создать конфигурационный файл, в котором без вмешательства разработчика, тех.персонал может менять различные настройки для подключения в базе данных
- настройки для работы с почтовыми серверами
- возможность изменения и описания настроек для работы с JWT-маркером (полезные данные для JWT, "соль" для кодирования цифровой подписи маркера)
- менять "соль", которая нужна для кодирования пароля пользователя

Как же принято в настоящий момент :

оставлять такие конфигурационные файлы в src/main/resources,
или же
Староверъ:
то это делают через переменные окружения или JNDI (в localhost/Catalina/app.xml).


Если через "переменные окружения или JNDI ", тогда это как программируется (можно просто ссылку на простой пример, как это организовано).

Какой подход чаще применяется ?
Изменен:19 мая 2019 11:00
 
 
Сообщения:67
Вот это проект, на который вы указали ссылку, он для чего

Я видел класс, который использует технологию JNDI

Насколько я понял описание, то данный класс обращается к конфигурационному файлу Tomcat и читает его и получает какие-то свойства, описывающие какие-то настройки, например для серверов (в классической J2EE, в server.xml настраивалось подключение к базе данных, это делалось для Tomcat) ) ?
А ведь серверов много для развертывания, не обязательно будет использоваться Tomcat. Приложение будет привязано только для работы с контейнером сервлетов ?
Изменен:19 мая 2019 11:11
 
Модераторы:wedens
Сейчас эту тему просматривают:Нет