package co.yixiang;
import lombok.Data;
@Data
public class Order1 {
private String title;
private String price;
private String num;
}
package co.yixiang;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
@Component
public class ProfitEventListenerTest {
@Async
@EventListener
@Order(11)
public void hand1(Order1 order1) {
System.out.println("hand1.....");
}
@Async
@EventListener
@Order(10)//越小的越先执行
public void hand2(Order1 order1) {
System.out.println("hand2.....");
}
}
package co.yixiang;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Slf4j
public class ProfitEventListenerTestRun {
@Autowired
private ApplicationEventPublisher publisher;
@Test
public void getUserAndGroup() throws InterruptedException {
publisher.publishEvent(new Order1());
}
}
输出
2022-12-02 10:02:34.467 INFO 8308 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService
hand2.....
hand1.....
测试证明, publisher.publishEvent 是可以像广播一样让所有接受者都收到消息的