SpringBoot HelloWorld
用idea创建SpringBoot工程非常方便,而且对于pom文件引入依赖也做了极大的简化,不需要自己关心那么多版本的问题,只要自己指定了SpringBoot的版本,那么对应的Spring SpringMVC等版本都是给配置好的。
创建新工程的时候,直接选SpringBoot Initializer,然后勾上Spring Web就可以
这样一个简单的SpringBoot模板就创建好了,可以看到它的pom文件并不是很多,一个web的starter(起步依赖),一个测试的依赖,还有一个打包插件(最后把项目打成jar包时用的,不能去)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
虽然看起来好像只有一个核心依赖,但是可以看一下它的依赖结构非常复杂:
![](https://cdn.jsdelivr.net/gh//Fushier/ImgCloud@main/data/20210121162246.png)
![](https://cdn.jsdelivr.net/gh//Fushier/ImgCloud@main/data/20210121162637.png)
已经帮你把需要用到的包都给引进来了,其中还包括内嵌的tomcat,所以后续就不用打war包了。而且版本号也是指定好的,可以点进starter的pom文件看一下:
比如这里用的2.3.8的SpringBoot,对应的spring-webmvc就是5.2.12.RELEASE,不用再自己一个个引入它们的依赖还担心版本不一致问题。所以这个starter可以理解为一个套餐,点一个套餐什么都给你配好了,后续有别的需求可以单点。
java目录下只有一个Application类
// SpringBoot项目启动入口类
// 核心注解,主要用于开启Spring自动配置
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
resources目录下的东西是固定的:
![](https://cdn.jsdelivr.net/gh//Fushier/ImgCloud@main/data/20210121164348.png)
static下放静态资源(CSS,image等);templates下放模板引擎,后续就不用jsp了,官方推荐的模板引擎是Thymeleaf,当然这个现在也不常用了;application.properties是SpringBoot的核心配置文件。
既然已经把web的依赖都引入了,下面直接写就行了,因为不用jsp了现在还没学模板引擎,先让Controller返回字符串看结果。写代码之前需要明确一点,SpringBoot的扫描规则和之前Spring的@ComponentScan的默认规则是一样的,即扫描Application所在包以及子包的所有对象,所以我们所有的代码都应该在cn.youkee包以及子包下,如果现在有一个类加上@Component注解,但是放在cn包下,是扫描不到的,也就无法被加载到容器中:
another2已经加上了注解,但是位于cn包下,所以是扫描不到的。
IndexController:
@Controller
public class IndexController {
@RequestMapping("/hello")
@ResponseBody
public String sayHello() {
return "Hello,SpringBoot!";
}
}
然后运行Application的main,在控制台可以看到Tomcat started on port(s): 8080 (http) with context path ‘’,也就是没有之前打war包后项目的名字,所以访问的时候路径直接从根路径开始写就行,没有context path。
![](https://cdn.jsdelivr.net/gh//Fushier/ImgCloud@main/data/20210121170637.png)