package com.dst.user.index;
import com.dst.steed.common.util.DstSpringUtil;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.util.StopWatch;
import java.text.DecimalFormat;
import static com.dst.user.index.DSTUserIndexApplication.PACKAGE_NAME;
/**
* @Description: 服务启动
* @author: liu wei ping
* @date: 2023/07/25
*/
@Slf4j
@SpringBootApplication(scanBasePackages = {PACKAGE_NAME})
@EnableFeignClients(basePackages = PACKAGE_NAME + ".infrastructure.acl")
@MapperScan(basePackages = {PACKAGE_NAME + ".infrastructure.biz.**.mapper", PACKAGE_NAME + ".modules.business.**.mapper"})
public class UserIndexApplication implements CommandLineRunner, ApplicationContextAware {
public static final String PACKAGE_NAME = "com.dst.user.index";
@Autowired
private ConfigurableApplicationContext applicationContext;
public static void main(String[] args) {
System.setProperty("nacos.logging.default.config.enabled","false");
StopWatch stopWatch = new StopWatch();
stopWatch.start();
SpringApplication.run(DSTUserIndexApplication.class, args);
stopWatch.stop();
log.info("【服务:" + DstSpringUtil.getAppName() +
";环境:" + DstSpringUtil.getActiveProfile() +
"】启动成功,耗时:" +
new DecimalFormat("#.##").format(stopWatch.getTotalTimeSeconds()) + " 秒。");
}
/**
* kill -15时执行改钩子函数
*/
@Override
public void run(String... args) {
log.info("启动成功!");
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
log.info("服务关闭");
applicationContext.close();
}));
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
if (applicationContext instanceof ConfigurableApplicationContext) {
this.applicationContext = (ConfigurableApplicationContext)
applicationContext;
}
}
}