# 第三章 从HellWorld开始
### 创建Maven工程
打开Intellij或Eclipse,新建一个Maven工程(Project),其中GroupId和ArtifactId可以随便添写,如Hello
如果不清楚如何创建Maven工程,请大家自行百度。
创建好后(笔者创建的名称为HelloWorld),如果使用的是Intellij IDE,它会弹出Maven projects need to be imported提示,选择“Enable Auto-Import”。
工程目录结构为:
~~~
HelloWorld
--src
--main
--java
--resources
--test(里面内容可以忽略)
--pom.xml
~~~
### 配置pom.xml文件
打开工程名下的pom.xml,原内容如下:
~~~
<?xml version="1.0" encoding="UTF-8"?>
<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>hello</groupId>
<artifactId>hello</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
~~~
1、添加parent标签,以下指明SpringBoot版本为1.4.0
~~~
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
~~~
2、添加starter-web依赖,因为我们是开发Web平台,所以必须依赖spring-boot-starter-web,它内置了tomcat容器。
~~~
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
~~~
**添加后完整的pom.xml文件内容为:**
~~~
<?xml version="1.0" encoding="UTF-8"?>
<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>hello</groupId>
<artifactId>hello</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
~~~
### 创建入口类
**创建包名**
展开src->main->java,右击java,新建一个package,名称为lightsword。右击lightsword,新建一个java类,名称为lightsword.java。
lightsword.java内容如下:(增加一个main方法,调用SpringApplication类的run方法,引用了一个SpringBootApplication注解)
~~~
package lightsword;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class lightsword {
public static void main(String[] args){
SpringApplication.run(lightsword.class, args);
}
}
~~~
运行lightsword.java后,出现以下信息表示运行成功:
~~~
...
...
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
....
....
: Started lightsword in 3.953 seconds (JVM running for 5.172)
~~~
**为了打印Hello World,我们在main方法加入一行代码**
~~~
public static void main(String[] args){
SpringApplication.run(lightsword.class, args);
System.out.println("Hello world");
}
~~~
再次运行,结果多了一行Hello world:
...
....
: Started lightsword in 3.908 seconds (JVM running for 4.95)
Hello world
**可能遇到的问题:端口冲突**
如果你电脑上的8080端口号被其它程序(如jenkins)占用了,则运行lightsword会报以下错误:
~~~
java.net.BindException: Address already in use
...
...
Failed to start component [Connector[HTTP/1.1-8080]]
...
~~~
**解决方法**
在src->main->resources目录下新建一个文件,名称为application.properties(这是SpringBoot统一的配置文件)
加了以下一行内容:(取个电脑上可用的端口号,如下面的9527,看过星爷电影的都懂的)
server.port = 9527
再次运行即可。
### 讲解
分析我们的入口类lightsword.java。
1. @SpringBootApplication注解,它其实帮我们做了很多事情,包括各种配置,扫描等。它相当于以下三个注解的作用:
@Configuration
@EnableAutoConfiguration
@ComponentScan
为了简化和方便,我们必须在入口类加入以上注解,当然最方便的就使用@SpringBootApplication一个注解。
2. 调用SpringApplication类的run启动应用程序。
**后面章节我们都使用9527端口作为讲解。**