项目构建

spring initializr

打开https://start.spring.io/ 这个网站来生成一个 Spring Boot 的项目。
图片.png
图片.png

解压文件到指定目录

  1. unzip HelloWorld.zip -d ~/Documents/SpringBoot-Note

查看目录结构

  1. tree
  2. .
  3. ├── HELP.md
  4. ├── mvnw
  5. ├── mvnw.cmd
  6. ├── pom.xml
  7. └── src
  8. ├── main
  9. ├── java
  10. └── com
  11. └── github
  12. └── HelloWorld
  13. └── HelloWorldApplication.java
  14. └── resources
  15. ├── application.properties
  16. ├── static
  17. └── templates
  18. └── test
  19. └── java
  20. └── com
  21. └── github
  22. └── HelloWorld
  23. └── HelloWorldApplicationTests.java
  24. 14 directories, 7 files

IDEA

Springboot——HelloWorld - 图3

Springboot——HelloWorld - 图4

Springboot——HelloWorld - 图5

工程结构

mvn的工程结构

  1. ├── pom.xml
  2. └── src
  3. ├── main
  4. ├── java
  5. └── resources
  6. └── test
  7. └── java

pom配置信息

  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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.1.11.RELEASE</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.github</groupId>
  12. <artifactId>HelloWorld</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>HelloWorld</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-test</artifactId>
  27. <scope>test</scope>
  28. </dependency>
  29. </dependencies>
  30. <build>
  31. <plugins>
  32. <plugin>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-maven-plugin</artifactId>
  35. </plugin>
  36. </plugins>
  37. </build>
  38. </project>

启动项目

启动入口

@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

  1. package com.spring;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class HelloMainApplication {
  6. public static void main(String[] args) {
  7. SpringApplication.run(HelloMainApplication.class,args);
  8. }
  9. }

注意Spring Boot 的启动类位置是需要最外层的,否则可能导致一些类无法被正确扫描到
**

启动方式

图片.png

命令行模式方式

  1. mvn spring-boot:run

启动端口

pring Boot 项目会使用 8080 作为项目的端口号。如果我们修改端口号的话,直接修改
src/main/resources/application.properties配置文件即可。

  1. server.port=8090

启动日志结果

  1. . ____ _ __ _ _
  2. /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
  3. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
  4. \\/ ___)| |_)| | | | | || (_| | ) ) ) )
  5. ' |____| .__|_| |_|_| |_\__, | / / / /
  6. =========|_|==============|___/=/_/_/_/
  7. :: Spring Boot :: (v2.1.11.RELEASE)
  8. 2019-12-18 16:35:03.898 INFO 25701 --- [ main] c.g.HelloWorld.HelloWorldApplication : Starting HelloWorldApplication on baxiang with PID 25701 (/home/baxiang/Documents/SpringBoot-Note/HelloWorld/target/classes started by baxiang in /home/baxiang/Documents/SpringBoot-Note/HelloWorld)
  9. 2019-12-18 16:35:03.900 INFO 25701 --- [ main] c.g.HelloWorld.HelloWorldApplication : No active profile set, falling back to default profiles: default
  10. 2019-12-18 16:35:04.710 INFO 25701 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
  11. 2019-12-18 16:35:04.743 INFO 25701 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
  12. 2019-12-18 16:35:04.743 INFO 25701 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.29]
  13. 2019-12-18 16:35:04.829 INFO 25701 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
  14. 2019-12-18 16:35:04.830 INFO 25701 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 892 ms
  15. 2019-12-18 16:35:05.045 INFO 25701 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
  16. 2019-12-18 16:35:05.254 INFO 25701 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
  17. 2019-12-18 16:35:05.257 INFO 25701 --- [ main] c.g.HelloWorld.HelloWorldApplication : Started HelloWorldApplication in 1.633 seconds (JVM running for

HelloWorld

创建HelloController

  1. package com.github.controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController
  5. public class HelloController {
  6. @GetMapping("hello")
  7. public String sayHello() {
  8. return "Hello Spring boot\n";
  9. }
  10. }

@RestController注解相当于@Controller+@ResponseBody组合在一起使用,此注解相当于注解类中方法返回不是视图界面,而是return语句中的内容。
@GetMapping(“hello”)注解定义了请求路径是/hello

文件结构如下注意点是要将Application类放在最外侧,即包含所有子包 ,HelloWorldApplication.java是当前的启动类 ,一般设置在子包的上一层,spring-boot会自动加载启动类所在包下及其子包下的所有组件.

  1. src git:(master) tree
  2. .
  3. ├── main
  4. ├── java
  5. └── com
  6. └── github
  7. ├── controller
  8. └── HelloController.java
  9. └── HelloWorldApplication.java
  10. └── resources
  11. ├── application.properties
  12. ├── static
  13. └── templates
  14. └── test
  15. └── java
  16. └── com
  17. └── github
  18. └── HelloWorld
  19. └── HelloWorldApplicationTests.java

测试结果:

  1. curl "http://127.0.0.1:8080/hello"
  2. Hello Spring boot

/src/main/java 目录下放置所有Java 文件(源文件)
/src/main/resources 用于存放所有的资源文件 包括静态资源文件,配置文件,等
/src/main/resources/static 存放各类静态资源
/src/main/resources/application.properties 配置文件 支持两种配置文件类型,即.properties和.yml
/src/main/resources/templates 存放模板文件,如Thymeleaf模板 现在都是前后端分离 会越来越少
/src/test/java 单元测试类Java代码
/target 放置编译后的.class 文件,配置文件

热更新部署

打开Preference->Build,Execution,Deployment->Compiler->勾选Build project automatically ,如果嫌麻烦直接打开idea项目配置选项:输入 Compiler , 并且勾选上 Build project automatically
image.png
选择Help->Find Action 或者mac os快捷键是command + shift + A
image.png
输入Registry选择第一个
image.png
找到“complier.automake.allow.when.app.running”->勾选此项
image.png

工程目录结构

工程代码

1.启动类(Application.java)推荐放在根目录com.springboot包下
2.实体类(domain)
A: com.springboot.domain(jpa项目)
B: com.springboot.pojo(mybatis项目)
3.数据接口访问层(Dao)
A: com.springboot.repository(jpa项目)
B: com.springboot.mapper(mybatis项目)
4.数据服务接口层(Service)推荐:com.springboot.service
5.数据服务实现层(Service Implements)推荐:com.springboot.service.impl
6.前端控制器层(Controller)推荐:com.springboot.controller
7.工具类库(utils)推荐:com.springboot.utils
8.配置类(config)推荐:com.springboot.config
9.数据传输对象(dto)推荐:com.springboot.dto 数据传输对象(Data Transfer Object)用于封装多个实体类(domain)之间的关系,不破坏原有的实体类结构
10.视图包装对象(vo)推荐:com.springboot.vo 视图包装对象(View Object)用于封装客户端请求的数据,防止部分数据泄露(如:管理员ID),保证数据安全,不破坏 原有的实体类结构。
11常量接口类(constant)置于com.springboot.constant

资源配置

根目录:src/main/resources
1.项目配置文件:resources/application.yml
2.静态资源目录:resources/static/ 用于存放html、css、js、图片等资源
3.视图模板目录:resources/templates/ 用于存放jsp、thymeleaf等模板文件
4.mybatis映射文件:resources/mapper/(mybatis项目)
5.mybatis配置文件:resources/mapper/config/(mybatis项目)