Spring Boot
首先我们需要注意版本的问题,Spring Boot 要求的版本是 Java 8 及以上,Maven 需要 3.3 以上。
然后我们来建一个 Maven 工程,第一个程序我们可以根据 官方文档 来做。
首先需要引入一个父工程 Spring Boot 。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
</parent>
我们现在要开发 Web 场景的话,就需要导入一个 Web 依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
可以看到,我们虽然只引入了这一个依赖,但是实际上导入了非常多的包。
接着按照文档,我们就可以直接来写代码了。
首先我们来写一个主程序类,这是Spring Boot 程序的入口。
在类上我们需要添加一个注解 @SpringBootApplication
,表示这是一个主程序类,然后在 main 方法中,调用 SpringApplication
的 run
方法,将这个主程序类以及 main 方法的参数传递进去,这样一个主程序就写好了。
然后我们来写业务代码。
我定义了一个 HelloController
类,先写了一个简单的方法,在方法上添加了 @RequestMapping
注解,表示映射浏览器的 hello
请求。
我们希望浏览器发出 hello 请求的时候,会返回给浏览器一个字符串 "Hello Spring Boot"
,所以我们还需要再添加一个注解。
由于这个类可能还要处理多个请求,都是要通过字符串返回给浏览器,所以我们可以直接将这个注解写到类上。代表这个类中的每一个方法的返回数据都是直接写在浏览器上的。
实质上这两个注解 Spring MVC 也有一个新注解可以替代。
所以我们可以直接写一个 @RestController
注解。
然后我们直接可以在主程序类里启动 Spring Boot。
如果这里启动失败,可以参考下面的链接👇
我们可以直接进入对应的 url 来看结果。
这和我们定义的方法是一致的。
可以看到,我们既不用管Tomcat,也不用管其他端口号之类的配置,只写了几行代码就完成了一个web程序。
在Spring Boot 中,我们的所有配置都可以整合到 resources 下一个配置文件里。
这个配置文件的名称是固定的,就是 application.properties
。在这个文件中我们可以修改 Tomcat 和 Spring MVC 等的设置。IDEA 会有自动的提示。
比如我们修改一下服务器的端口号
重新启动一下程序,然后我们进 8322 的url。
那么这个配置文件中都能配置哪些东西呢?我们可以参考一下 官方文档。
这是Spring Boot 对配置的一个简化。同样,我们部署也可以被简化。
我们可以创建一个可执行的 jar 包。
只要引入 Spring Boot 提供的插件,就可以将项目打成一个 jar 包,这个 jar 包自带了我们整套的运行环境,一般称其为 fat jar,小胖 jar。这样我们直接就可以运行它。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
然后我们可以将这个项目打个包试一试。
可以看到 jar 包已经生成了。
然后我们直接在 cmd 窗口运行这个 jar 包。
可以看到结果是成功的,小胖 jar 被直接运行了。
这里需要注意一点,我们并没有开启组件扫描功能,是 Spring Boot 帮我们开启的,会自动地扫描主程序类以及主程序类所在包中所有的类。也就是说,我们的注解有效性仅存在所标记的类和主程序类在同一个包中,否则是无效的。
如果我们的 controller 包在 boot 包外的话,controller 包中的类是不会被组件扫描的,被注解也没有用。
比如我们再定义一个类,把它放在主程序类所在的 boot 包外。
这时再运行一下程序。
可以看到报了 404 未找到。
那怎么才能扫描到主程序包外的类呢?这里还需要一个参数。在主程序中添加一个属性 scanBasePackages
。
结果就 OK 了,该类正常的被扫描到了。
相信经过这个简单的例子,大家已经了解到 Spring Boot 的强大之处了。