package com.fr.start; import com.fanruan.boot.DiscoveryProperties; import com.fanruan.carina.Carina; import com.fanruan.carina.context.CarinaApplicationContext; import com.fanruan.carina.exceptions.CarinaException; import com.fanruan.carina.launch.XmlCarinaLauncher; import com.fanruan.carina.lifecycle.bootstrap.BootstrapFactory; import com.fanruan.discovery.DiscoveryFactory; import javax.servlet.ServletContext; import java.util.Properties; /** * 设计器启动的launcher,用来自定义具体的launcher逻辑 * * @author Destiny.Lin * @since 11.0 * Created on 2024/5/27 */ public class DesignLauncher extends XmlCarinaLauncher { private static CarinaApplicationContext context; public DesignLauncher(String path) { super(context.getPartitionManager(), context.getServletContext(), context.getCarinaApplicationProperties(), path); } @Override protected boolean validate(Class clz) { return true; } @Override protected CarinaApplicationContext createApplicationContext(ServletContext servletContext, Properties carinaApplicationProperties) { return context; } @Override protected void initServiceDiscovery() throws CarinaException { try { Carina.properties(DiscoveryProperties.class).setServer("local"); // 服务发现初始化 DiscoveryFactory.initialize(); } catch (Exception e) { throw new CarinaException(e); } } @Override protected void initializeSpring() throws CarinaException { // do nothing } @Override protected void startListening() { } @Override protected void setGlobalInformation() { } @Override protected void startComponentsAndServices() throws CarinaException { try { BootstrapFactory.get().supplement(); BootstrapFactory.get().start("design_pre_start"); } catch (Exception e) { throw new RuntimeException(e); } } /** * 获取context */ public static CarinaApplicationContext getContext() { return context; } /** * 设置context */ public static void setContext(CarinaApplicationContext context) { DesignLauncher.context = context; } }