ApplicationContext.publishEvent()-异步调用
1.定义一个事件
public class EventDemo extends ApplicationEvent {
public EventDemo(String demand) {
super(demand);
}
}
2.注册一个监听器
public interface EventServiceDemo extends ApplicationListener<EventDemo> {
}
@Service
public class EventServiceDemoImpl implements EventServiceDemo {
@Override
public void onApplicationEvent(EventDemo event) {
System.out.println(event.getSource() );
}
}
3. 使用
@RestController
@RequestMapping(value = "/home")
public class HelloController {
@Autowired
private ApplicationContext context;
@RequestMapping("/event/{str}")
public String event( @PathVariable String str ){
context.publishEvent(new EventDemo("我触发了一个事件"));
return str;
}
}
4.测试
@SpringBootApplication
@EnableAsync
public class SpringBootPublishEventApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
application.application().setBannerMode(Banner.Mode.OFF);
return application.sources(SpringBootPublishEventApplication.class);
}
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SpringBootPublishEventApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
}
1.定义一个事件
public class EventDemo extends ApplicationEvent {
public EventDemo(String demand) {
super(demand);
}
}
2.注册一个监听器
public interface EventServiceDemo extends ApplicationListener<EventDemo> {
}
@Service
public class EventServiceDemoImpl implements EventServiceDemo {
@Override
public void onApplicationEvent(EventDemo event) {
System.out.println(event.getSource() );
}
}
3. 使用
@RestController
@RequestMapping(value = "/home")
public class HelloController {
@Autowired
private ApplicationContext context;
@RequestMapping("/event/{str}")
public String event( @PathVariable String str ){
context.publishEvent(new EventDemo("我触发了一个事件"));
return str;
}
}
4.测试
@SpringBootApplication
@EnableAsync
public class SpringBootPublishEventApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
application.application().setBannerMode(Banner.Mode.OFF);
return application.sources(SpringBootPublishEventApplication.class);
}
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SpringBootPublishEventApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
}
1.定义一个事件
public class EventDemo extends ApplicationEvent {
public EventDemo(String demand) {
super(demand);
}
}
2.注册一个监听器
public interface EventServiceDemo extends ApplicationListener<EventDemo> {
}
@Service
public class EventServiceDemoImpl implements EventServiceDemo {
@Override
public void onApplicationEvent(EventDemo event) {
System.out.println(event.getSource() );
}
}
3. 使用
@RestController
@RequestMapping(value = "/home")
public class HelloController {
@Autowired
private ApplicationContext context;
@RequestMapping("/event/{str}")
public String event( @PathVariable String str ){
context.publishEvent(new EventDemo("我触发了一个事件"));
return str;
}
}
4.测试
@SpringBootApplication
@EnableAsync
public class SpringBootPublishEventApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
application.application().setBannerMode(Banner.Mode.OFF);
return application.sources(SpringBootPublishEventApplication.class);
}
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SpringBootPublishEventApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
}