#java #spring #spring-boot #spring-mvc #annotations
#java #spring #spring-boot #spring-mvc #аннотации
Вопрос:
Я довольно новичок в использовании Spring Boot, и я использую это руководство в качестве руководства по настройке службы. И это довольно хорошо, но я не понимаю, как я в конечном итоге получаю доступ к объекту countryArray из метода main в моем приложении.класс Java. Не мог бы кто-нибудь объяснить, пожалуйста?
Ответ №1:
Если я понял ваш вопрос, в настоящее время вы хотите получить доступ к списку countryArray, который будет заполнен методом init вашего Spring service, и этот список будет заполнен после инициализации Spring service. Я полагаю, у вас должен быть общедоступный метод получения, который позволит вам прочитать объект.
Кроме того, при доступе к методу getter вам не следует инициализировать свой класс сервиса с помощью new class(), а вместо этого получить одноэлементный объект с помощью springcontext.getbean("nameofyourbean")
Ответ №2:
Прежде всего. Не используйте @PostConstruct. Это не очень проверяемо. Вы могли бы реализовать интерфейс InitializingBean и инициализировать там свой класс.
Второе: внедрение конструктора — это хороший способ сделать ваш код тестируемым. ИМХО лучше, чем @Autowired. Возможно и то, и другое. Это скорее дело вкуса 😉
В качестве альтернативы вы могли бы создать класс @Configuration, который создает @Bean с именем. Например.:
@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); или у вас могут быть планировщики (см. Spring schedulers); службы, которые вызывают другие службы или репозитории. Там вы можете получить доступ к методам / свойствам, к которым вы привыкли в Java.
Если ваше приложение представляет собой приложение для запуска, выполнения чего-либо и остановки (не указывайте имя atm) или приложение на основе графического интерфейса, продумайте использование spring.