Я пытаюсь получить некоторые свойства из файла application.properties
и мой код выглядит следующим образом:
Основной класс приложения:
package it.mysite;
@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {
public static void main(String[] args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);
System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MySendService().sendReport();
}
}
Мой класс обслуживания:
package it.mysite.service;
@Service
public class MySendService {
@Value("${mail.fc.to}")
private String[] to;
@Value("${mail.fc.subject}")
private String subject;
@Autowired ReportService reportEmailService;
@Autowired MailProperties mailProperties;
public void sendReport(){
if(mailProperties.getTo().length > 0) {
}
}
Класс, в который я получаю свойства:
package it.mysite.properties;
@Component
@ConfigurationProperties("mail.fc")
public class MailProperties {
private String[] to;
public String[] getTo(){
return to;
}
}
Файл конфигурации:
# Email config
mail.fc.to=my@mail.com
mail.fc.subject=My subject
Все свойства @Autowired
null
, а также свойства @Value
(я пытался получить их таким же образом).Когда я печатаю свой контекст, я вижу эти классы в списке bean-компонентов, и, насколько я знаю, правильная иерархия пакетов, в чем может быть проблема?
EDIT Хорошо, я получилпредложение из дублирующего вопроса, и я изменил свой основной код класса следующим образом: Основной класс приложения:
package it.mysite;
@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {
@Autowired MySendService mySendService;
public static void main(String[] args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);
System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MailSenderApplication().boot();
}
private void boot(){
mySendService.sendReport();
}
}
Но я получил ту же ошибку.Разве это не было предложение?