前面已经知道如何创建Spring Boot项目,我们就从Hello World开始我们的学习里程吧

引入 web 模块

在pom.xml中添加支持web的模块:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

我们的项目里有一个类:

@SpringBootApplication //开启组件扫描和自动配置
public class SpringWebApplication {
   public static void main(String[] args) {
      SpringApplication.run(SpringWebApplication.class, args);//负责启动引导应用程序
   }
}

@SpringBootApplication开启了Spring的组件扫描和Spring Boot的自动配置功能。实际上,@SpringBootApplication将三个有用的注解组合在了一起。

  • Spring的@Configuration:标明该类使用Spring基于Java的配置。
  • Spring的@ComponentScan:启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。
  • Spring Boot 的 @EnableAutoConfiguration : 这个不起眼的小注解也可以称为@Abracadabra,就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。

SpringWebApplication 还是一个启动引导类。要运行Spring Boot应用程序有几种方式,其中包含传统的WAR文件部署。但这里的main()方法让你可以在命令行里把该应用程序当作一个可执行JAR文件来运行。这里向SpringApplication.run()传递了一个SpringWebApplication 类的引用,还有命令行参数,通过这些东西启动应用程序。 实际上,就算一行代码也没写,此时你仍然可以构建应用程序尝尝鲜。要构建并运行应用程序,最简单的方法就是用Gradle的bootRun任务:

$ gradle bootRun

bootRun任务来自Spring Boot的Gradle插件,此外,你也可以用Gradle构建项目,然后在命令行里用java来运行它:

$ gradle build

...

$ java -jar xxx.jar

若你在命令行使用gradlew 那么你使用的是存放在~/.gradlew/wrapper/dists路径下面的,通过在gradle/wrapper/gradle-wrapper.properties文件指定的gradle脚本。而你若使用gradle命令行,那么你使用的是~/.gradle下面的gradle脚本。

如果是使用mvn构建的项目,我们可以通过Maven命令运行项目:

mvn spring-boot:run

应用程序应该能正常运行,启动一个监听8080端口的Tomcat服务器。要是愿意,你可以用浏览器访问http://localhost:8080, 但由于还没写控制器类, 你只会收到一个HTTP 404 错误,看到错误页面。

好了,现在我们写一个控制器类吧,我们拿官网的例子:

@RestController
public class HelloController {
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
}

@RestController 的意思就是 Controller 里面的方法都以 json 格式输出。运行程序,然后在在网页里打开127.0.0.1:8080/

SpringBoot编写Hello World_命令行

我们来研究下这个HelloController 类,先看下官网的解释:

大概意思就是,添加了@RestController 注解意味着Spring MVC可以使用它来处理Web请求,当从浏览器调用或在命令行上使用curl时,使用@RequestMapping("/")标注的方法将返回纯文本。 @RestController 注解是Spring 4.0引入的,查看源码可知其包含了 @Controller 和 @ResponseBody 注解。在以前的版本,返回json需要@ResponseBody配合@Controller。@RestController专门为响应内容式的 Controller 而设计的,可以直接响应对象为JSON。 

看,我们几乎什么都没做,就实现了我们的hello world,是不是很容易