《SpringBoot2从入门到工程实战》第一篇:Hello World

技术博客,开篇不能免俗,从Hello World开始吧.

新建一个Maven的quickstart工程,配置Java版本为 1.8.x版本.

本章示例工程名称:springboot_worker_helloworld

代码地址:https://github.com/stamhe/SpringBoot-Work-Example

目录结构如下:

pom.xml内容:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.stamhe</groupId>
  <artifactId>springboot_worker_helloworld</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>springboot_worker_helloworld</name>
  <url>http://maven.apache.org</url>


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
	</properties>
  
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

  	<dependencies>
    	<dependency>
        	<groupId>org.springframework.boot</groupId>
        	<artifactId>spring-boot-starter-test</artifactId>
        	<scope>test</scope>
    	</dependency>
    
	    <dependency>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
    
	    <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <scope>test</scope>
	    </dependency>
	</dependencies>

	<!-- 
	使用Spring Boot微服务搭建框架,在eclipse和Idea下能正常运行,但是在打成jar包部署或者直接使用java -jar命令的时候,
	提示了xxxxxx.jar中没有主清单属性.
	添加 spring-boot-maven-plugin然后再执行mvn install 或者 mvn clean package 即可解决.
	-->
	<build>
	  <plugins>
	  	<plugin>
	  		<groupId>org.springframework.boot</groupId>
	 		<artifactId>spring-boot-maven-plugin</artifactId>
	  	</plugin>
	  </plugins>
 	</build>
</project>



pom.xml说明:

  • <parent>项是SpringBoot的父级依赖,这个标识当前的项目就是SpringBoot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,其他常用的官方starter包就可以省去version标签了,这样也统一了Maven依赖包的版本。
  • spring-boot-starter :核心模块,包含有自动配置支持、日志、application.yml以及application.properties等。如果引入了 spring-boot-starter-web web 模块可以去掉此配置,因为 spring-boot-starter-web 自动依赖了 spring-boot-starter。
  • spring-boot-starter-test :测试模块,包括 JUnit、Mockito。
  • <build>项主要是用来提供将SpringBoot打包为jar包时,使用java -jar xxx.jar 方式运行的打包支持

App.java内容:

package com.stamhe.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
    	SpringApplication.run(App.class, args);
    }
}

App启动类说明:

  • 主函数入口
  • 使用了@SpringBootApplication来注解类,点击进入SpringBootApplication源码可知,改注解主要是:@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan等注解的集合,通常我们说SpringBoot整合了Spring、SpringMVC简化了开发,这种类似的注解集合,就是提现之一,相信之前用SpringMVC开发过项目的同学深有体会,后面还有@RestController也是一样的注解集合。
  • 使用SpringApplication.run来加载入口类

@SpringBootApplication注解以及SpringApplication.run()的使用,都是SpringBoot项目的标准性动作,每一个SpringBoot项目都必须的。

HelloController.java内容:

package com.stamhe.springboot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class HelloController {

	@RequestMapping("/world")
	public String worldAction()
	{
		return "Hello World";
	}
}

Controller类说明:

@RestController这个注解,其实是@Controller,@RequestMapping,@ResponseBody 这三个注解的集合,点开源码,我们就知道了,这个是标准的SpringMVC注解。基本作用如下:

  • Controller:标识此类为一个控制器,Spring会自动实例化此类。
  • RequestMapping:URL映射。
  • ResponseBody:将返回结果自动转换为json串。后面的章节会有详细的演示。

修改完毕后,在Eclipse或者IDEA里面启动Application(或者使用mvn clean package后,在项目目录下执行 java -jar target/springboot_worker_helloworld-0.0.1-SNAPSHOT.jar 来启动),启动成功后,在浏览器或者命令行下面,访问

http://localhost:8080/hello/world

即可得到下面的信息:




SpringBoot项目解析:

  • 默认情况下将/src/main/resources目录下的文件作为资源文件加入到classpath下,只对application*.yml,application*.yaml,application*.properties 这样格式的文件进行匹配过滤。配置文件的使用,我们会在下一章节专门讲解。
  • SpringBoot使用约定的配置文件、标准的注解集合以及统一的项目启动方式,简化了很多之前SpringMVC开发项目繁琐配置,带来了非常强烈的开发体验提升,基本算得上是革命性的改变。
  • SpringBoot默认带有一个内置的tomcat,其参数也可以自定义,性能也足以跟原生的tomcat媲美,完全可以使用它来做项目的容器,这样可以直接使用java -jar xxx.jar的方式来运行项目。

下一章,我们将深度解析SpringBoot的配置文件的使用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

code

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据