Java运行非Web的Springboot项目(测试类或启动主类两种方法)
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项目(测试类或启动主类两种方法)相关推荐
- JDK8版本JAVA运行错误:找不到或无法加载主类 HelloJava的原因及解决方案
JDK8版本JAVA运行错误:找不到或无法加载主类 HelloJava的原因及解决方案 一.错误描述 二.编写HelloJava代码 三.在命令行CMD窗口中运行代码 四.错误原因分析 解决方案 注: ...
- mysql数据库运行远程用户访问不了_MySQL数据库远程访问权限如何打开(两种方法)...
下载GPL版本安装 MySQL Community Edition(GPL) Community (GPL) Downloads » 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上 ...
- Java中对中国标准时间进行格式化(yyyy-MM-dd HH:mm:ss)两种方法
Java中国标准时间进行格式化的两种方法,如下 package time;import java.text.ParseException; import java.text.SimpleDateFor ...
- 10bit灰阶测试图_真假10bit?!到底该怎么测?测试显示器10bit色深的两种方法
为什么要开启10bit色深? 因为显示器的色深越高,容纳的颜色就越多,越能够在色彩的过度渐变方面做的细腻,因为颜色渐变更自然了,观感也会得到很大的提升. 现在就是一个显示行业升级换代的分水岭,就像当年 ...
- idea无法找到主启动类_idea 启动springboot项目报找不到主类
DSO激活时,生成主数据SID时报错:原因,主数据允许小写字母没有勾上 声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.c ...
- Java学习笔记:模拟实现微信零钱通(面向过程和OOP两种方法)
写在前面:本次一个小测验技术范围非常浅,非常适用于像我这样小白的人练习,并深刻体会面向过程和面向对象最直观的区别. 1.面向过程代码实现: package com.codetest.smallchan ...
- 查找python项目依赖并生成requirements.txt的两种方法
项目开发的时候,总是要搭建和部署环境,这时,就需要一个python第三方包的list,一般叫做requirements.txt.如果项目使用virtualenv环境,直接使用pip freeze即可, ...
- 在DWR中实现直接获取一个JAVA类的返回值的两种方法
第一种实现(来源网上转贴): js 代码 function Test() { var _data = ""; this.getString = function() { //设置成 ...
- linux设置管理员身份运行,在Deepin V20系统下添加以管理员身份打开选项的两种方法...
如果你所使用的Deepin V20系统在点击时没有以管理员身份打开选项,请用以下方法处理. 方法一:添加以管理员身份打开选项 新建admin-file-manager.desktop,内容为: [De ...
最新文章
- .h头文件 .lib动态链接库文件 .dll 动态链接库
- Bellman-Ford算法——为什么要循环n-1次?图有n个点,又不能有回路,所以最短路径最多n-1边。又因为每次循环,至少relax一边所以最多n-1次就行了!...
- yolov5训练_YoloV5模型训练实战教程:Kaggle全球小麦检测竞赛
- UA OPTI570 量子力学25 2-level System
- 【c++】23.【函数指针】定义? 为什么不直接调用函数而要使用函数指针?
- LeetCode 705. Design HashSet (设计哈希集合)
- Runtime Error VS Accepted (大整数排序 )
- bzoj-2957 楼房重建
- 摄影灵感|轮廓趋势,剪影以一种主要的方式回来了。
- TTButton 的正确使用的方法
- Q86:镜面反射(Mirror Reflection)
- ffmpeg处理hikvision平台PS流
- Python爬虫 西刺代理IP的获取 代理IP
- js人脸识别,tracker.js前端人脸识别框架
- mybatis3-中文文档
- 英谷Oracle答案,火焰纹章风花雪月各角色能学什么魔法 各角色可习得魔法与熟练度要求一览...
- 安卓图像处理(四)保存以及删除图片
- 74LS85的IP核设计
- java 周总结_Java周总结1
- 【vue-baidu-map + mapv】结合实现动态水流动画
热门文章
- PPPoE 的 基础配置及原理
- 推荐:Go语言程序开发IDE
- 名著赏读 | 研究生教育的历史,读《探究的场所》
- Apache网页的优化,安全与防盗链
- 怎样简洁明了地说清楚产品需求?
- 单IP服务器利用ProxmoxVE建立IPv4-NAT和IPv6虚拟机
- Vuex 使用指南(todoList 案例)
- 《麻省理工科技评论》“全球十大突破性技术”年度系列榜单
- mysql中要创建choose数据库_在MySQL中要创建choose数据库,应该使用命令“crea
- 第一篇:python基础