Как или где я могу получить доступ к моему файлу свойств

У меня есть файл свойств myprops.properties следующим образом:

Wsdl=someurl
UserName=user
UserPassword=pasword
Application=appName

И внутри моего контроллера я пытаюсь получить доступ к установленным значениям в моем сервисе следующим образом

Properties prop = new Properties();
prop.load(new FileInputStream("resources/myprops.properties"));
myService.setWsdl(prop.getProperty("Wsdl"));
myService.setUserName(prop.getProperty("UserName"));
myService.setUserPassword(prop.getProperty("UserPassword"));
myService.setApplication(prop.getProperty("Application"));

мой вопрос: я просто не знаю, какой путь использовать. Это проект Spring, если это имеет значение. и Idealy Я хотел бы иметь файл свойств в папке «src/main/resources»

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

Ошибка, которую я получаю

java.io.FileNotFoundException: resources\drm.properties (The system cannot find the path specified) 

любые советы/объяснения или даже ссылка, которая ясно объясняет это, было бы замечательно

1
Ваш файл свойств должен выглядеть как Wsdl = someurl
добавлено автор Sotirios Delimanolis, источник
Отсутствие исследований? Через несколько минут я нашел несколько ответов в SO.
добавлено автор Jess, источник
@Jessemon Я нашел ответы на подобные вопросы, но никто из них не работал для меня или не объяснял так, как я мог понять
добавлено автор jonnie, источник
В файле свойств содержится недопустимый синтаксис.
добавлено автор Pradeep Simha, источник

5 ответы

Учитывая, что src/main/resources находится в пути к классам, вы можете сделать следующее:

Resource resource = new ClassPathResource("/myprops.properties");
Properties props = PropertiesLoaderUtils.loadProperties(resource);
1
добавлено
Я все еще получаю java.io.FileNotFoundException: ресурс пути класса [myprops.properties] не может быть открыт, потому что он не существует
добавлено автор jonnie, источник
Оказывается, твоя работа была, но я пропустил ее. Спасибо.
добавлено автор jonnie, источник

Если вы используете весну, вы можете установить свой заполнитель.

 

и в ваших компонентах вы можете вводить значения из свойства, используя аннотацию @Value

@Autowired
public Foo(@Value("${Wsdl}") String wsdl) {
   ...
}

в случае, указанном выше, я использовал в конструкторе, но его можно использовать с помощью Autowired field/setter.

Поэтому в вашем сервисе у вас может быть что-то вроде:

@Service
public class MyService {
     private final String wsdl;
     private final String username;
     private final String password;
     private final String application;

     @Autowired
     public MyService(
         @Value("${Wsdl}") String wsdl,
         @Value("${UserName}") String username,
         @Value("${UserPassword}") String password,
         @Value("${Application}") String application
         ) {
        //set it to each field.
     }
}
1
добавлено
Мне потребовалось некоторое время, чтобы понять, но теперь, когда я определенно стоит того и гораздо более подходящего, пожалуйста, пример Реймуса. Спасибо.
добавлено автор jonnie, источник
Никакой проблемы сопряжения;) Рад, что я мог бы помочь
добавлено автор Caesar Ralf, источник
0
добавлено

Не используйте FileInputStream ; используйте getResourceAsStream() , чтобы прочитать его из контекста сервлета.

0
добавлено
Вы не проверяли, был ли InputStream, который вы получили, был нулевым. Может быть, путь, который вы ему дали, был неправильным.
добавлено автор duffymo, источник
Я попробовал это и получил java.lang.NullPointerException в java.util.Properties $ LineReader.readLine
добавлено автор jonnie, источник

ну, src/main/resources находятся на пути к классам, вам просто нужно сделать.

Свойства properties = PropertiesLoaderUtils.loadAllProperties («имя вашего свойства»);

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Spring Framework and more
Spring Framework and more
839 участник(ов)

чат о spring framework и связанных с ним технологиях. We're discussing: job, tech questions, beer meet up/networking: tech review ,LinkedIn skills, SOF q/a raise up& etc. languages: russian,java,eng.

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async