2、选择构建工具Maven Project、Spring Boot版本 2.0.1,以及一些工程基本信息 ,最后点击Generate Project生成项目
3.下载后解压,导入maven项目:
项目结构如下(controller和domain包是后加的):需要注意的是,自己新建的包,必须放在 项目入口类Springboot01Application 所在包的里面!
如上图所示,Spring Boot的基础结构共三个文件:
- src/main/java 程序开发以及主程序入口
- src/main/resources 配置文件
- src/test/java 测试程序
另外,spingboot建议的目录结果如下: 假设root package结构为:com.example.myproject ,那么包和类的层级关系按照如下约定来建立!这一点很重要,否则你的应用可能起不来!
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- controller
| +- CustomerController.java
|
- 1、Application.java 建议放到根目录下面,主要用于做一些框架配置
- 2、domain目录主要用于实体(Entity)与数据访问层(Repository)
- 3、service 层主要是业务类代码
- 4、controller 负责页面访问控制
采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改
4. 由于是web应用,在pom文件中 添加web依赖
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5
6 <groupId>com.lch</groupId>
7 <artifactId>springboot01</artifactId>
8 <version>0.0.1-SNAPSHOT</version>
9 <packaging>jar</packaging>
10
11 <name>springboot01</name>
12 <description>Demo project for Spring Boot</description>
13
14 <parent>
15 <groupId>org.springframework.boot</groupId>
16 <artifactId>spring-boot-starter-parent</artifactId>
17 <version>2.0.1.RELEASE</version>
18 <relativePath/> <!-- lookup parent from repository -->
19 </parent>
20
21 <properties>
22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
24 <java.version>1.8</java.version>
25 </properties>
26
27 <dependencies>
28 <dependency>
29 <groupId>org.springframework.boot</groupId>
30 <artifactId>spring-boot-starter</artifactId>
31 </dependency>
32
33 <dependency>
34 <groupId>org.springframework.boot</groupId>
35 <artifactId>spring-boot-starter-test</artifactId>
36 <scope>test</scope>
37 </dependency>
38 <!-- web项目,添加web依赖 -->
39 <dependency>
40 <groupId>org.springframework.boot</groupId>
41 <artifactId>spring-boot-starter-web</artifactId>
42 </dependency>
43 </dependencies>
44
45 <build>
46 <plugins>
47 <plugin>
48 <groupId>org.springframework.boot</groupId>
49 <artifactId>spring-boot-maven-plugin</artifactId>
50 </plugin>
51 </plugins>
52 </build>
53
54
55 </project>
当前的pom.xml
内容如下,仅引入了两个模块:然后手动添加web的依赖
-
spring-boot-starter
:核心模块,包括自动配置支持、日志和YAML -
spring-boot-starter-test
:测试模块,包括JUnit、Hamcrest、Mockito
需要注意的是pom文件中的parent元素,里边定义了版本号,所以pom文件里 dependency 依赖都可以不用写版本号,这个parent 的作用就是规定了要使用的jar包的版本编号
5.编写自己的controller (在domain包下新建一个User 类的Javabean)
1 package com.lch.springboot01.domain;
2
3 public class User {
4 private String userName;
5 private String passWord;
6
7 public String getUserName() {
8 return userName;
9 }
10
11 public void setUserName(String userName) {
12 this.userName = userName;
13 }
14
15 public String getPassWord() {
16 return passWord;
17 }
18
19 public void setPassWord(String passWord) {
20 this.passWord = passWord;
21 }
22 }
1 package com.lch.springboot01.controller;
2
3 import org.springframework.web.bind.annotation.RequestMapping;
4 import org.springframework.web.bind.annotation.RestController;
5
6 import com.lch.springboot01.domain.User;
7
8 @RestController
9 public class HelloController {
10 @RequestMapping("/hello")
11 public String index() {
12 return "hello world";
13 }
14
15 @RequestMapping("/getUser") //测试返回json字符串
16 public User getUser() {
17 User user = new User();
18 user.setUserName("小明");
19 user.setPassWord("123");
20 return user;
21 }
22
23 }
6. 切换到Springboot01Application 类下面,直接点击运行,可以看到控制台上打印了springboot的图案(注意,只有Springboot01Application 这个类才是入口类,不能在其他类下面启动项目,会报错)
启动完成后,可以看到所使用的容器,端口号,以及上下文路径 context path
7.在浏览器输入http://localhost:8080/hello 进行访问,可以看到页面输出 hello world 。
接着在浏览器输入 http://localhost:8080/getUser 进行访问,可以看到页面输出json字符串格式的user对象。至此,一个springboot入门例子就完成了
按F12打开浏览器的调试界面,F5刷新,再次访问,点击Headers,可以看到这次请求默认是get请求,响应是json格式并且字符编码为UTF-8
切换到response 界面,可以看到本次请求的原始响应信息,这在开发过程中调试代码会有帮助
8.上面小例子用到的注解说明
(1)入口类和 @SpringBoopplication 注解
Sping Boot通常有一个名为pplication的入口类,入口类里有一个 main方法,这个main方法,其实就是一个标准的Java应用的入口方法。在main方法中使用SpringApplication.nun( Springboot01Application, args) ,启动Spring Boot应用项目。
@SpringBoopplication是Spring Boot的核心注解,它是一个组合注解(顺便说一下,注解最大的用处就是反射调用!!!),源码如下:
1 @Target(ElementType.TYPE)
2 @Retention(RetentionPolicy.RUNTIME)
3 @Documented
4 @Inherited
5 @SpringBootConfiguration
6 @EnableAutoConfiguration
7 @ComponentScan(excludeFilters = {
8 @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
9 @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
10 public @interface SpringBootApplication {
11
12 @AliasFor(annotation = EnableAutoConfiguration.class)
13 Class<?>[] exclude() default {};
14
15
16 @AliasFor(annotation = EnableAutoConfiguration.class)
17 String[] excludeName() default {};
18
19
20 @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
21 String[] scanBasePackages() default {};
22
23 @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
24 Class<?>[] scanBasePackageClasses() default {};
25
26 }
注意,黄底标注部分,就是这个注解的定义:public @interface SpringBootApplication ,把@去掉,就是接口,写成@interface,就是注解的定义
如果不想使用@SpringBootApplication 注解,可以直接在入口类上使用@Configuratoin 、@EnableAutoConfiguration 、 @ComponentScan 注解。其中@EnableAutoConfiguration 让Springboot根据类路径中的jar包依赖为当前项目进行自动配置。 例如,添加了spring-boot-starter-web 依赖,会自动添加Tomcat 和SpingMVC的依赖,那么springboot会对Tomcat和SpringMVC进行自动配置。
springboot会自动扫描@SpringBootApplication 所在类的同级的包以及下级包里面的Bean,这一点很重要( 若为JPA项目,还可以扫描标注@Entity 的实体类,建议入口类放置的位置在groupId+ariifactID组合的包名下。) 因此,自己所写的代码,应放置在 跟 Springboot01Application 这个启动类平级的包里面!即按照上面第3步中spirngboot建议的包目录结构,如下图:
(2)@RestController 注解的作用是,让Controller中的方法都以json的格式返回给 请求发起者
spring boot 使用@RestController 来返回json格式的数据给前端页面。@RestController 就等价于Spring MVC中的 @RequestMapping 注解和 @ResponseBody 同时标注
示例代码下载地址
https://github.com/liuch0228/springboot.git