把项目运行起来是极具成就感的事情,不管是在学习新语言还是新框架的过程中。上一篇文章说明了如何使用Spring Initializr和IDE来创建项目,下面就看看项目能不能跑起来,我们通过IDE和命令行,直观地理解框架的作用。
先来一张IntelliJ IDEA的截图,为项目刚创建时候的状态。左侧为项目目录区,右侧为代码区。左边,右边和下边都有工具栏,你可以打开终端,可以查看类结构,可以查看Build时候的信息,可以查看运行时候的信息,可以查看Gradle和Maven的依赖以及任务,可以连接数据库,可以查看Spring相关的东西比如各种Bean及其关联等等。界面最上方是文件的目录以及运行相关的按钮。
下面来看看用IntelliJ IDEA怎么跑:
当你创建好项目后,目录中只有一个DemoApplication.java,这个类是整个程序的入口。当然类的名字可能不一样,根据你写的项目名称,类名也不一样,也许你的叫做BlogApplication,不管名字叫啥,类上总有一个 @SpringBootApplication
注解,这个注解的作用我们以后再详细说明。DemoApplication里有一个main方法,此方法可以作为程序的入口执行,在打开项目之后,IDEA会自动生成一个运行设置(Run Configuration),把DemoApplication作为程序运行的起点。
如果你迫不及待想跑跑看看,可以点击上面的“Run”按钮,绿色三角形那个。两秒之后,程序就跑起来了,下面是运行时输出的信息:
这里面是包含了很多东西的,比如Spring Boot版本是2.1.5,内置Tomcat的版本是9.0.19,Web服务器的端口是8080,进程ID为29536等等。这会儿你该疑惑了,我的程序都跑起来了,怎么没有网页跳出来呢?去哪里看呢?你可以打开 localhost:8080
看看:
呀,出错了。因为你的程序虽然跑起来了,然是并不能处理任何请求。那就只能写一个咯。你需要在项目目录中新建一个MainController的类(类名是啥无所谓),内容如下:
MainController上有一个 @Controller
注解,这个注解告诉框架这个类是用来处理Web请求的。类只有一个home方法,@GetMapping
注解告诉框架home方法可以处理”/”路径也就是根路径上的请求,@ResponseBody
注解表示home方法的返回值就是网络请求的结果,客户端最终会收到。重新运行项目,打开 localhost:8080
再看:
好了,这就OK了,你的第一个项目已经成功运行并且可以处理请求了。还可以在命令行运行
除了在IDE里运行,Gradle也提供了任务(task)在命令行里启动。
./gradlew tasks
或者 gradle tasks
都可以查看可以执行的任务,其中bootRun是启动Spring Boot项目的任务,你可以通过以下方式启动:
这样,我们的项目就启动了,跟在IDE里点“Run”是一样的效果,此时访问浏览器一样可以看到结果。你可能会注意到,还有一个任务叫做bootJar,这个任务就是用来打包的,最终会生成一个jar包,你可以拿来部署或者是演示等等。
bootJar任务运行完了之后,会在build/libs目录下得到最终的jar包,通过java -jar 就可以运行。
尽管如此,我还是推荐在IDE中运行,毕竟日常开发,你总会加断点调试什么的,命令行使用起来不太方便。
博客链接:https://fookwood.com/spring-boot-tutorial-3-run