Прежде всего. Не используйте @PostConstruct. Это не очень поддается проверке.
Вы можете реализовать InitializingBean-Interface и инициировать там свой класс.
Второе: использование инжектора-конструктора - хорошая задача, чтобы сделать ваш код тестируемым.
ИМХО лучше чем @Autowired. И то и другое возможно. Это больше вопрос вкуса; -)
В качестве альтернативы вы можете создать класс @Configuration, который создает @Bean с именем. E.g.:
@Configuration
public class CountryConfig {
@Bean(name = "countries")
public Collection<Country> countries() {
List<Country> countries = new ArrayList<>();
// add countries here or load from repository
return countries;
}
}
@Service
public class CountryService {
private final Collection<Country> countries;
public CountryService(@Qualifier("countries") Collection<Country> countries) {
this.countries = countries;
}
}
Ответить на ваш вопрос
Вы не хотите делать что-то в главном классе вашего приложения.
Если вы создаете веб-приложение, у вас есть контроллеры, которые вызывают сервисные методы (см. Spring-boot-starter-web); или вы можете иметь планировщики (см. весенние планировщики); сервисы, которые вызывают другие сервисы или репозитории.
Там вы можете получить доступ к методам / свойствам, как вы привыкли в Java.
Если ваше приложение является приложением, запускающим что-то, что останавливается (не называйте имя atm), или приложением на основе графического интерфейса, подумайте об использовании Spring.