Spring相关
一、 spring 容器自定义发布事件,解耦
1. 创建自定义的事件注:必须继承ApplicationEvent
package com.ruoyi.demo;
import org.springframework.context.ApplicationEvent;
public class UserRegistEvent extends ApplicationEvent {
public UserRegistEvent(Object source) {
super(source);
}
}
2. 发布事件
package com.ruoyi.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
@Component
public class Component2 {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publishEvent(){
applicationEventPublisher.publishEvent(new UserRegistEvent("发布"));
}
}
3. 监听事件
package com.ruoyi.demo;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class Component1 {
@EventListener
public void acceptEvent(UserRegistEvent userRegistEvent){
Object source = userRegistEvent.getSource();
System.out.println(source);
}
}
4. 测试
public static void main(String[] args)
{
ConfigurableApplicationContext run = SpringApplication.run(RuoYiApplication.class, args);
Component2 bean = run.getBeanFactory().getBean(Component2.class);
bean.publishEvent();
}