网上已有非常多的spingboot项目的教程,基本上都是通过Spring Initializr构建出完整的Springboot应用,但是我觉得对于入门者来说,还是希望从最简单方式来搭建helloworld,以便更好地理解SpringBoot的一些原理,本文我就以jar包的形式,通过IDEA工具完成一个最简单的Helloworld应用。
环境准备
JDK:1.8及以上
IDE:IDEA
maven:3.3及以上
Springboot:2.3.4
环境的配置以及检验这里就不多说了,不熟悉话可以自行百度
搭建过程
1、IDEA选择File --> new-->project
选择maven,配置好应用的JDK版本
2、点击Next进入下一步
填写项目名称,指定工程存放位置,以及其他信息,直接finish
3、项目的依赖配置
在创建后的工程目录如下:
注意:新工程创建好之后,首选要做的是要配置工程的maven,比如指定maven路径以及仓库配置等,否则IDEA默认会指定,有时候会导致你pom依赖报红。
在将maven配置后,如果pom依赖还有报红的情况,可以在Terminal中执行mvn package将所需的组件进行下载即可
接下来我们要做的是将应用所依赖的配置完成,在pom.xml文件中添加
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
然后需要编写应用的主程序入口
在java的目录下,新建名为com的包,报名自取即可,新建Application类
代码如下:
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
注意:如果在加入@SpringBootApplication注解的时候报红,首先可以在报红的提示信息中增加maven的依赖配置,pom文件中自动增加org.springframework.boot的依赖配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
此时,如果还出现报红的话,选中file-->Invalidate Caches/Restart,选择Invalidate and Restart操作,清除缓存和重启后一般就不报红了。
main方法中的SpringApplication.run(Application.class, args);为应用的启动程序。
至此,最简单的SpringBoot的最简单的搭建就完成了,那么如何让这个应用实现helloworld?
我们可以在创建的com的包下创建controller包,新建HelloController类
package com.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello() {
return "hello world";
}
}
然后我们回到Application中,右键run 'Application'启动应用,在打印台上我们可以看到启动信息:
2020-12-17 15:04:50.781 INFO 21880 --- [ main] com.Application : Starting Application on xxxxx with PID 21880 (F:\SpringbootHello\target\classes started by xxx in F:\SpringbootHello)
2020-12-17 15:04:50.783 INFO 21880 --- [ main] com.Application : The following profiles are active: dev
2020-12-17 15:04:52.810 INFO 21880 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-12-17 15:04:52.817 INFO 21880 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-12-17 15:04:52.817 INFO 21880 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.38]
2020-12-17 15:04:52.898 INFO 21880 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-12-17 15:04:52.898 INFO 21880 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2082 ms
2020-12-17 15:04:53.005 INFO 21880 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-12-17 15:04:53.117 INFO 21880 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-12-17 15:04:53.124 INFO 21880 --- [ main] com.Application : Started Application in 2.628 seconds (JVM running for 3.227)
2020-12-17 15:05:52.668 INFO 21880 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-12-17 15:05:52.668 INFO 21880 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-12-17 15:05:52.671 INFO 21880 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
提示tomcat在8080端口上启动成功,我们可以在浏览器上直接访问,http://localhost:8080/hello,随机就可以看到hello world的信息。
此外,这种方式还可以直接打成jar包,我们可以选择IDEA最左下角的图标,在有边框会有Maven的选项,选择Lifecycle中的package执行,就会在工程目录下生成jar包,进入到jar包目录下,在cmd中执行java -jar xx(jar包名),则同样可以将应用启动,在浏览器中访问http://localhost:8080/hello得到同样的结果。