Хорошо, поскольку для меня не ясно, что и как вам нужно для управления вентиляционными отверстиями, я приведу вам стандартный пример:
Чтобы опубликовать событие в весенней загрузке, вы можете создать службу, управляющую публикацией:
@Component
public class CustomSpringEventPublisherService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publishCustomEvent(final String message) {
System.out.println("Publishing custom event. ");
CustomSpringEvent customSpringEvent = new CustomSpringEvent(this, message);
applicationEventPublisher.publishEvent(customSpringEvent);
}
}
CustomSpingEvent - это POJO, содержащий вашу полезную нагрузку и источник:
public class CustomSpringEvent extends ApplicationEvent {
private String message;
public CustomSpringEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
Затем вы можете реализовать прослушиватель следующим образом:
@Component
public class AnnotationDrivenContextStartedListener {
@EventListener
public void handleContextStart(CustomSpringEvent event) {
System.out.println("A custom event and his payload ->"+event.getMessage());
}
}
Теперь в вашем случае выможно реализовать прослушиватель, как показано, и в контроллере вы можете поместить службу издателя: @RestController @RequestMapping ("/") открытый класс YourController {
private final CustomSpringEventPublisherService customSpringEventPublisherService;
public YourController(CustomSpringEventPublisherService customSpringEventPublisherService) {
this.customSpringEventPublisherService = customSpringEventPublisherService;
}
@GetMapping(value = "/resource")
public ResponseEntity<PublicationDto> getResource() {
// Create CustomSpringEvent
CustomSpringEvent customSpringEvent = new CustomSpringEvent(...)
this.customSpringEventPublisherService.publishCustomEvent(customSpringEvent);
}
}
Это действительно концептуальноработать и не тестироваться.
Надеюсь, это поможет вам понять, как это работает