Java运行非Web的Springboot项目(测试类或启动主类两种方法)

  • 前言
  • 一、创建打开一个Springboot项目
  • 二、运行项目
    • 1、Test测试类运行
    • 2、启动主类运行
  • 三、持续运行不停止(定时任务、自动执行)
  • 总结

前言

如果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

ConfigurableApplicationContext context = SpringApplication.run(UseToTestApplication.class, args);//获取容器DemoControllerDemoController demoController = (DemoController) context.getBean("demoController");//DemoController获取成功,调用demo方法demoController.demo();

输出 HelloWorld


三、持续运行不停止(定时任务、自动执行)

如果想要让项目不停止,一直打印HelloWorld,可以在启动类 UseToTestApplication 上添加注解 @EnableScheduling ,意思为开启定时任务,这个时候启动类就不能修改成上面的getBean那样了,要改回原来的样子

然后在 controller 层的DemoControlelr里面加上注解 @Component 可以确保这个类会被定时任务扫描到,然后在下面的 demo 方法上加上 @Scheduled(fixedRate = 3000),意思为每1000毫秒执行一次 demo 方法


启动主类,运行结果,每1秒打印一个 HelloWorld ,永不停止


总结

如果需要更详细的定时任务的操作,我的另一篇文章有详解,可以定制逻辑更复杂的定时任务

传送门:Java实现非Web项目的Springboot定时任务(每3秒自动执行一次)

Java运行非Web的Springboot项目(测试类或启动主类两种方法)相关推荐

  1. JDK8版本JAVA运行错误:找不到或无法加载主类 HelloJava的原因及解决方案

    JDK8版本JAVA运行错误:找不到或无法加载主类 HelloJava的原因及解决方案 一.错误描述 二.编写HelloJava代码 三.在命令行CMD窗口中运行代码 四.错误原因分析 解决方案 注: ...

  2. mysql数据库运行远程用户访问不了_MySQL数据库远程访问权限如何打开(两种方法)...

    下载GPL版本安装 MySQL Community Edition(GPL) Community (GPL) Downloads » 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上 ...

  3. Java中对中国标准时间进行格式化(yyyy-MM-dd HH:mm:ss)两种方法

    Java中国标准时间进行格式化的两种方法,如下 package time;import java.text.ParseException; import java.text.SimpleDateFor ...

  4. 10bit灰阶测试图_真假10bit?!到底该怎么测?测试显示器10bit色深的两种方法

    为什么要开启10bit色深? 因为显示器的色深越高,容纳的颜色就越多,越能够在色彩的过度渐变方面做的细腻,因为颜色渐变更自然了,观感也会得到很大的提升. 现在就是一个显示行业升级换代的分水岭,就像当年 ...

  5. idea无法找到主启动类_idea 启动springboot项目报找不到主类

    DSO激活时,生成主数据SID时报错:原因,主数据允许小写字母没有勾上 声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.c ...

  6. Java学习笔记:模拟实现微信零钱通(面向过程和OOP两种方法)

    写在前面:本次一个小测验技术范围非常浅,非常适用于像我这样小白的人练习,并深刻体会面向过程和面向对象最直观的区别. 1.面向过程代码实现: package com.codetest.smallchan ...

  7. 查找python项目依赖并生成requirements.txt的两种方法

    项目开发的时候,总是要搭建和部署环境,这时,就需要一个python第三方包的list,一般叫做requirements.txt.如果项目使用virtualenv环境,直接使用pip freeze即可, ...

  8. 在DWR中实现直接获取一个JAVA类的返回值的两种方法

    第一种实现(来源网上转贴): js 代码 function Test() { var _data = ""; this.getString = function() { //设置成 ...

  9. linux设置管理员身份运行,在Deepin V20系统下添加以管理员身份打开选项的两种方法...

    如果你所使用的Deepin V20系统在点击时没有以管理员身份打开选项,请用以下方法处理. 方法一:添加以管理员身份打开选项 新建admin-file-manager.desktop,内容为: [De ...

最新文章

  1. .h头文件 .lib动态链接库文件 .dll 动态链接库
  2. Bellman-Ford算法——为什么要循环n-1次?图有n个点,又不能有回路,所以最短路径最多n-1边。又因为每次循环,至少relax一边所以最多n-1次就行了!...
  3. yolov5训练_YoloV5模型训练实战教程:Kaggle全球小麦检测竞赛
  4. UA OPTI570 量子力学25 2-level System
  5. 【c++】23.【函数指针】定义? 为什么不直接调用函数而要使用函数指针?
  6. LeetCode 705. Design HashSet (设计哈希集合)
  7. Runtime Error VS Accepted (大整数排序 )
  8. bzoj-2957 楼房重建
  9. 摄影灵感|轮廓趋势,剪影以一种主要的方式回来了。
  10. TTButton 的正确使用的方法
  11. Q86:镜面反射(Mirror Reflection)
  12. ffmpeg处理hikvision平台PS流
  13. Python爬虫 西刺代理IP的获取 代理IP
  14. js人脸识别,tracker.js前端人脸识别框架
  15. mybatis3-中文文档
  16. 英谷Oracle答案,火焰纹章风花雪月各角色能学什么魔法 各角色可习得魔法与熟练度要求一览...
  17. 安卓图像处理(四)保存以及删除图片
  18. 74LS85的IP核设计
  19. java 周总结_Java周总结1
  20. 【vue-baidu-map + mapv】结合实现动态水流动画

热门文章

  1. PPPoE 的 基础配置及原理
  2. 推荐:Go语言程序开发IDE
  3. 名著赏读 | 研究生教育的历史,读《探究的场所》
  4. Apache网页的优化,安全与防盗链
  5. 怎样简洁明了地说清楚产品需求?
  6. 单IP服务器利用ProxmoxVE建立IPv4-NAT和IPv6虚拟机
  7. Vuex 使用指南(todoList 案例)
  8. 《麻省理工科技评论》“全球十大突破性技术”年度系列榜单
  9. mysql中要创建choose数据库_在MySQL中要创建choose数据库,应该使用命令“crea
  10. 第一篇:python基础