項目啟動就執(zhí)行的方法:
找到的四種
https://www.cnblogs.com/zuidongfeng/p/9926471.html
https://blog.csdn.net/limingcai168/article/details/92797258
其中一種:
實現(xiàn)CommandLineRunner接口香拉,實現(xiàn)run方法。
這里的例子同時使用了發(fā)布訂閱不撑,這么設(shè)計是因為想到這個處理不一定只在項目啟動時做臼勉,這樣比較靈活可復(fù)用弃衍,而且方便擴(kuò)展發(fā)布新的事件或者增加新的事件訂閱者:
- 先定義一個事件
public class TenantEvent extends ApplicationEvent {
private String tenantId;
private String schoolId;
public TenantEvent(Object source) {
super(source);
}
public TenantEvent(Object source,String tenantId,String schoolId) {
super(source);
this.tenantId = tenantId;
this.schoolId = schoolId;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public String getSchoolId() {
return schoolId;
}
public void setSchoolId(String schoolId) {
this.schoolId = schoolId;
}
}
- 在run方法中發(fā)布事件
@Component
@Slf4j
@Transactional
public class InitRunner implements CommandLineRunner {
@Autowired
private ApplicationEventPublisher eventPublisher;
@Override
public void run(String... args) throws Exception {
// do something...
TenantEvent tenantEvent = new TenantEvent(tenantConfig,tenantConfig.getTenantId(), tenantConfig.getSchoolId());
eventPublisher.publishEvent(tenantEvent);
}
}
- 事件監(jiān)聽,處理者
@EventListener
public void initDiskRoles(TenantEvent tenantEvent) {
// do something
}
發(fā)布訂閱模式的優(yōu)點缺點:
https://blog.csdn.net/weixin_34415923/article/details/91385712