Java运行非Web的Springboot项目(测试类或启动主类两种方法)
前言
如果springboot不是一个Web项目,大家知道,项目启动以后马上就会停止,并且 controller 等各层里面的方法也不会被执行,下面有两种方式可以运行容器里面的方法,测试类或者修改启动主类,都非常简单,几行代码的事情。
一、创建打开一个Springboot项目
使用idea,选择Spring Initializr进行创建

next,这一步不要勾选 Spring Web 依赖,不然就是个 Web 项目了

完成以后大家发现,已经为我们创建好了 测试类,那我们就先讲用测试类运行吧
先写好基本结构,我的这个 demo方法就是一个 System.out.println(“Hello World”);

二、运行项目
1、Test测试类运行
打开测试类,我的叫 UseToTestApplicationTests,不同项目名字不一样,里面的初始代码是这样的,每个人都一样

在里面直接 @Autowired 你的 controller 层的文件,在下面 contextLoads 里面调用方法,右键,运行 contextLoads 就可以了。然后输出了 HelloWorld


2、启动主类运行
下面使用 UseToTestApplication 启动主类来运行项目
修改代码为下图所示,要获取哪个容器就getBean哪个容器名,右键启动 UseToTestApplication
1  | ConfigurableApplicationContext context = SpringApplication.run(UseToTestApplication.class, args);  | 

输出 HelloWorld

三、持续运行不停止(定时任务、自动执行)
如果想要让项目不停止,一直打印HelloWorld,可以在启动类 UseToTestApplication  上添加注解 @EnableScheduling ,意思为开启定时任务,这个时候启动类就不能修改成上面的getBean那样了,要改回原来的样子
然后在 controller 层的DemoControlelr里面加上注解 @Component 可以确保这个类会被定时任务扫描到,然后在下面的 demo 方法上加上 @Scheduled(fixedRate = 3000),意思为每1000毫秒执行一次 demo 方法


启动主类,运行结果,每1秒打印一个 HelloWorld ,永不停止
总结
如果需要更详细的定时任务的操作,我的另一篇文章有详解,可以定制逻辑更复杂的定时任务


