SpringBoot 的创建和运行
SpringBoot 是什么?
Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化Spring 程序开发的。Spring Boot 翻译⼀下就是 Spring 脚⼿架:
SpringBoot,就是让开发更简单了。
SpringBoot 优点
- 快速集成框架,SpringBoot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
- 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
- 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
- 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
- ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。
可以这么说:SpringBoot 将 Spring 的所有 “痛点 / 缺陷” ,都解决了。什么创建 根目录,xml配置文件,需要引入 spring-context 和 spring-beans 的依赖,Tomcat,部署项目。。。。都改成了内置。
就是不用我们去创建根目录 和 xml 配置文件,SpringBoot 都帮我们配置好了。直接拿着就能用。
SpringBoot 项目创建
我们是用 IDEA 来创建项目的,所以就有社区版和专业版的区别。
IDEA 社区版
在使用的时候,需要先安装一个 Spring Assistant 的插件:
如果没找到的话,用其他插件替换也可以:
然后就可以创建 SpringBoot 项目了:
-
新建项目,选择 Spring Assistant:
-
选择源或者配置源:
-
选择创建类型和 JDK 版本:
然后下一步,就可以选择 SpringBoot 版本和所需依赖了:
然后就可以添加依赖了:
然后一路 Next 就可以完成项目的创建了:
然后点击启动类启动,能输出 JVM 启动时间就说明项目创建成功了:
IDEA 专业版
IDEA 专业版的创建方式和社区版差不多,直接使用 Spring Initializr 就可以创建了:
然后下一步选择相应依赖:
然后 Next,项目就创建好了:
然后启动看到 JVM 启动时间就好了:
SpringBoot 项目目录
项目目录如下:
删除无效文件
因为我们是 SpringBoot 项目了,所以 maven 有关的东西就可以删掉:
main 目录
main 目录下面又有两个目录,java 目录和 resources 目录。
- java 目录下放的是所有的源码。
- resources 目录下放的是所有的项目资源文件。包括 HTML,VUE JS,JS,CSS,Image,项目的配置文件。
a)static 目录下放的就是:HTML,VUE JS,JS,CSS,Image 这些。
b)templates 里面是放的 模板,也就是同样的资源。
c)application.properties 是整个项目的配置文件。
test 目录
就是单元测试目录,里面和 java 目录的内容是一模一样的。
target 目录
这个目录是 IDEA 自动生成的,可以把它删掉,然后重新编译运行文件,就又会生成目录了。
pom.xml
这个文件是项目当中最重要的文件,因为 SpringBoot 项目是基于 maven 的,而 pom.xml 又是 maven 的核心文件。
输出 Hello World
也就是对一个接口进行访问,通过 RequestMapping
来设置路由,要注意的是,路由要全部小写,因为 Windows 是不区分大小写的,Linux 是区分大小写的。因为返回的不是一个静态页面的数据,所有还要加一个 @ResponseBody:
@Controller
public class UserController {
@ResponseBody
@RequestMapping("/sayhi")
public String sayHi() {
return "Hello World";
}
}
然后直接启动项目,通过浏览器访问就好了。因为 SpringBoot 内置了 Tomcat,所有直接访问就好了 http://127.0.0.1:8080/sayhi
,运行结果如下:
Sring Boot 中 “约定 大于 配置” 的思想
在编写上面编写项目代码的时候,其实就涉及到 “约定 大于 配置” 的思想。
-
在我们创建 Spring Boot 项目的时候,是没有设置配置文件的。因为 Spring Boot 已经给我们创建好了:
-
Spring Boot 对 bean 有着约定,就是会自动把 启动类 包里面的其他文件,和低目录的包里面的对象,如果这些对象加了五大类注解,那么这些对象就自动存入 Spring Boot 当中。
也就是放在 springbootdemo 目录下的文件,和 springbootdemo 目录下的包,都能注入。如果是上层目录,就不行了。
上面这就是约定大于配置的思想,因为放在其它包里面的话,是不会报错的。
结论:
- 需要将对象托管到 Spring Boot 的对象,必须要放在 Spring Boot 启动类的根路径或者是子路径中,否则不能被框架识别。
- Spring Boot 的配置比较少,但是 Spring Boot 的设计思想是:约定大于配置。