Spring-Boot - доступ к JpaRepository вне области действия контроллера - PullRequest
0 голосов
/ 05 марта 2020

У меня есть веб-приложение на SpringBoot, но оно также обрабатывает указанный протокол c, и оно запускается с ServerSocket, который ожидает подключения и обрабатывает его должным образом. Ниже приведен пример того, как я делаю это:

  public class MyServer extends Thread {
    @Autowired
    private MyRepository myRepo;

    public MyServer() {
      start();
    }

    public run() {
     ServerSocket server = new ServerSockey(7000);
     while (true) {
       Socket sock = server.accept();
       ...
       // Handle connection here
       myRepo.findById(1);
       ...
      }
  }
}

Мой репозиторий:

@Repository
public interface MyRepository extends JpaRepository<MyModel, Long> {
}

И мой основной метод, который запускает его:

@SpringBootApplication(exclude= {SecurityAutoConfiguration.class})
@ComponentScan(basePackages={"myComponentPackages"})
@EnableJpaRepositories(basePackages= {"myRepositoriesPackages"})
public class Main {

    public static void main(String[] args) {        
            new MyServer();

            SpringApplication springApp = new SpringApplication(Main.class);
            springApp.setBannerMode(Banner.Mode.OFF);
            springApp.run(args);
        }
}

Конечно, у меня есть намного больше, например, контроллеры, репозитории и т. Д. c., Но это служит примером того, что мне нужно. В этом случае мне нужно получить доступ к экземпляру MyRepository на MyServer, но, поскольку он не входит в область действия контроллера, который вызывается при запросе к веб-серверу, аннотация @Autowired не работает, а переменная myRepo всегда как ноль. Вопрос в следующем: как получить доступ к этому хранилищу вне контекста вызова покоя?

Любые советы?

Заранее спасибо, Леандро

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