Advertisement
Guest User

Untitled

a guest
May 7th, 2019
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.81 KB | None | 0 0
  1. @Configuration
  2. public class MyApiFactory {
  3.  
  4.   // Без этого ProjectTreeService автоматом не регистрируется  
  5.   // Почему я ОБЯЗАН это делать через код?
  6.   // Можно ли делегировать эту задачу спрингу?
  7.   // В какой книге это описано?
  8.  
  9.   @Bean
  10.   public ProjectTreeService getProjectTreeService() {
  11.     /* Здесь можно вызывать метод, помеченный @Bean. В таком случае спринг сам догадается, что тебе либо создать бин-зависимость, либо подставить уже созданную зависимость (чтобы зависимость была в 1 экземпляре, так как поумолчанию все бины в спринге - singleton). Более того, в рамках одного класса таких вызовов можно делать несколько, Spring гаранитрует, что при нескольких вызовов будет переиспользоваться один и тот же бин */
  12.     return new ProjectTreeService(getProjectTreeApi());
  13.   }
  14.  
  15.   @Bean
  16.   public ProjectTreeApi getProjectTreeApi() {
  17.  
  18.     // здесь нужно описать логику инициализации каждой копии MyApi
  19.     // можно использовать БД, PluginSettingsFactory и другие инструменты
  20.  
  21.     ProjectTreeApi projectTreeApi = getClientGenericApi(ProjectTreeApi.class);
  22.  
  23.     return projectTreeApi;
  24.   }
  25. }
  26.  
  27.  
  28. @Service
  29. public class ProjectTreeService {
  30.  
  31.   private final ProjectTreeApi projectTreeApi;
  32.  
  33.   public ProjectTreeService(ProjectTreeApi projectTreeApi) {
  34.     this.projectTreeApi = api;
  35.   }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement