想在spring项目初始化时调用方法执行某些操作。
思路一:
bean实现InitializingBean接口,实现 afterPropertiesSet() 方法。在bean初始化时会调用 afterPropertiesSet() 方法执行需要的操作
思路二:
bean实现 ApplicationListener<ContextRefreshedEvent> 接口,实现 onApplicationEvent() 方法。onApplicationEvent() 方法会在所有bean加载完毕时调用执行一些初始化操作
示例:
import com.xhgjky.warehouse.netty.client.NettyClient;
import com.xhgjky.warehouse.netty.server.NettyServer;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class NettyListening implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent ev) {
if (ev.getApplicationContext().getParent() == null) { // 防止重复调用多次
new Thread(
new Runnable() {
@Override
public void run() {
try {
System.err.println("开始创建netty连接");
new NettyServer().start();
new NettyClient().start();
} catch (Exception e) {
try {
TimeUnit.SECONDS.sleep(500);
run();
} catch (InterruptedException e1) {
System.out.println("重启失败");
e1.printStackTrace();
}
}
}
}
).start();
}
}
}