Как получить доступ к объекту из сервиса Spring - PullRequest
0 голосов
/ 04 апреля 2019

Я довольно новичок в использовании Spring Boot и использую это руководство в качестве руководства по настройке службы. И это довольно хорошо, но я не понимаю, как в конечном итоге я получаю доступ к объекту countryArray из метода main в своем классе Application.java. Может кто-нибудь объяснить, пожалуйста?

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Если я понял ваш вопрос, в настоящее время вы хотите получить доступ к списку countryArray , который будет заполнен методом init вашей службы Spring, и этот список будет заполнен после инициализации службы Spring.Я предлагаю вам иметь публичный метод получения, который позволит вам читать объект.

Кроме того, при доступе к методу получения вы не должны инициализировать свой класс обслуживания, используя новый класс() , но вместо этого получите одноэлементный объект, используя springcontext.getbean("nameofyourbean")

1 голос
/ 04 апреля 2019

Прежде всего. Не используйте @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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...