Home > AI > Backend > SpringBoot >

Spring Boot make customized Event, Publisher, and Listener

Example code:

CustomSpringEvent.java

public class CustomSpringEvent extends ApplicationEvent {
    private String message;

    public CustomSpringEvent(Object source, String message) {
        super(source);
        this.message = message;
    }
    public String getMessage() {
        return message;
    }
}

CustomSpringEventListener.java

@Component
public class CustomSpringEventListener implements ApplicationListener<CustomSpringEvent> {
    @Override
    public void onApplicationEvent(CustomSpringEvent event) {
        System.out.println("[Shark-listener]Received spring custom event - " + event.getMessage());
    }
}

CustomSpringEventPublisher.java

@Component
public class CustomSpringEventPublisher {
    @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);
    }
}

DemoApplication.java

@SpringBootApplication
@RestController
public class DemoApplication {


    @Autowired
    CustomSpringEventPublisher publisher;
    @Autowired
    CustomSpringEventListener listener;

	public static void main(String[] args) {


	    SpringApplication.run(DemoApplication.class, args);
	}


	@GetMapping("/pub")
    public void pub() {
        publisher.publishCustomEvent("[Shark-pub]hello!");
    }
    
}

Leave a Reply