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 ,永不停止
总结
如果需要更详细的定时任务的操作,我的另一篇文章有详解,可以定制逻辑更复杂的定时任务