Пружинная загрузка - отказывает автопровод - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь получить некоторые свойства из файла 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();
    }
}

Но я получил ту же ошибку.Разве это не было предложение?

...