Jar包启动
配置文件位于jar包同目录下可以正常读取
springboot jar运行后自动结束
创建类
import com.example.demo.Test;
import org.springframework.boot.CommandLineRunner;
import javax.annotation.Resource;
public class StartupRunner implements CommandLineRunner {
@Resource
private Test test;
@Override
public void run(String... args) throws Exception {
System.out.println("startup runner");
test.test();
System.out.println("task finished");
}
}
application 中
@SpringBootApplication
public class DemoApplication {
private static Test test;
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return () -> 100;
}
public static void main(String[] args) {
System.exit(SpringApplication
.exit(SpringApplication.run(DemoApplication.class, args)));
// SpringApplication.run(DemoApplication.class,args);
// ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();
// test = applicationContext.getBean(Test.class);
// test.test();
}
@Bean
public StartupRunner startupRunner(){
System.out.println("startUpRunner");
return new StartupRunner();
}
}
main 方法注入service
创建类
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SpringContextUtil.applicationContext == null) {
SpringContextUtil.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
}
main
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();
test = applicationContext.getBean(Test.class);
test.test();
}