Как правильно использовать application.properties в TelegramBotsApi?
Пишу бота и хочу чтобы некоторые данные он брал из application.properties, но не ясно где правильно указывать @PropertySource, поскольку ни в конфиг классе, ни в классе бота эта аннотация не работает.
Класс настроек бота:
public class Schedule_U32_bot extends TelegramLongPollingBot{
//Вот тут мне нужно инициализировать переменную с данными из application.properties
String foo;
@SuppressWarnings({ "unused"})
@Override
public void onUpdateReceived(Update update) {...}
@Override
public String getBotUsername() {...}
@Override
public String getBotToken() {...}
public void sendMessage(Update update, String text) {
try {
execute (SendMessage.builder()
.parseMode("Markdown")
.chatId(update.getMessage()
.getChatId())
.text(text)
.build());
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
Класс конфиг бота:
@Configuration
public class AppBotConfig {
public Schedule_U32_bot createBotSchedule_U32_bot() {
return new Schedule_U32_bot();
}
@Bean("Schedule_U32_botRegistration")
public void registrationBotSchedule_U32_bot() {
TelegramBotsApi TelegramBot;
try {
TelegramBot = new TelegramBotsApi(DefaultBotSession.class);
Schedule_U32_bot bot = createBotSchedule_U32_bot();
TelegramBot.registerBot(bot);
System.out.println("\n"+bot.getBotUsername()+" -> успешно запущен");
} catch (TelegramApiException e1) {
e1.printStackTrace();
}
}
BootApplication класс:
@SuppressWarnings("unused")
@SpringBootApplication
public class BotsApplication {
@SuppressWarnings("resource")
public static void main(String[] args) throws ClassNotFoundException {
SpringApplication application = new SpringApplication(BotsApplication.class);
application.setBanner(new CustomBanner());
application.run(args);
ApplicationContext context = new AnnotationConfigApplicationContext(AppBotConfig.class);
context.getBean("Schedule_U32_botRegistration");
}
}
Ответы (2 шт):
В классе-конфиге надо вводить аннотацию указывающую на .properties, и оттуда брать переменные через @Value
Используйте аннотацию @Value, только в вашем случае вам нужно будет получать значение из конфига в конфигурационном классе и передать значение в параметры конструктора класса Schedule_U32_bot.
То есть в конфигурационном классе над переменной вешаете аннотацию @Value("${foo}") и в application.properties указываете эту проперти как foo=value