springboot项目创建详细步骤
maven设置
将maven仓库设置为阿里云仓库,不然依赖会下载很慢(亲身体验过,两个小时左右,而且还会超时,所以在创建项目前,一定要先设置好maven)。
settings.xml
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
创建springboot项目:基本设置
引入项目依赖
项目依赖可以在项目创建后,在pom.xml中配置。也可以在项目创建时引入。
Developer Tools
Spring Boot DevTools
项目重启,热更新等。
Lombok
简化JavaBean的编写。比如在编写实体类时,在类上添加@Data注解,可以不用写get和set方法。
Spring Configuration Processor
spring默认读取yml配置。但是有时候需要读取传统的xml和properties文件,这时候就需要Spring Configuration Processor依赖了。如下配置:
引入pom依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
setting.properties配置
setting.theme=light
再在类头部加上@PropertySource(“classpath:your.properties”)注解。
@Component
@PropertySource(value = {"classpath:static/config/setting.properties"},
ignoreResourceNotFound = false, encoding = "UTF-8", name = "setting.properties")
public class Setting {
@Value("${setting.theme}")
private String theme;
}
当配置属性很多时,@Value注解就会显得冗余,使用@ConfigurationProperties注解会更进一步简化代码
@Component
@ConfigurationProperties(prefix = "setting")
@PropertySource(value = {"classpath:static/config/setting.properties"},
ignoreResourceNotFound = false, encoding = "UTF-8", name = "setting.properties")
public class Setting {
private String theme;
}
在项目中引用配置文件
@RestController
@EnableConfigurationProperties
public class SettingController {
@Autowired
Setting setting;
@RequestMapping("/")
public String setting(){
return "当前系统风格为:" + setting.getTheme();
}
}
Web
这里我们勾选Spring Web、Spring Session及Rest Repositories HAL Explorer三项
Spring Web
毋庸置疑,需要引入。创建web项目,包括restful,用Spring MVC创建应用。默认用tomcat作为内嵌的web容器。
Spring Reactive Web
核心为Spring 5 WebFlux。基于Servlet 3.1+。包括的组件有Router Functions、WebFlux、Reactive Streams。主要构建异步的、非堵塞的、事件驱动的服务,其在伸缩性方面表现非常好。
Servlet 3.1 规范特别适用于那种业务处理非常耗时的场景之下,可以减少服务器资源 的占用,并且提高并发处理速度 ,而对于那些能快速响应的场景收益并不大。
所以,对于一般项目,我们不引入这个依赖。
Rest Repositories
主要有以下作用:
- Spring Data REST 作为 Spring Data 项目的子集,开发者只需使用注解@RepositoryRestResource 标记,就可以把整个 Repository 转换为 HAL 风格的REST资源,目前已支持 Spring Data JPA、Spring Data MongoDB、Spring DataNeo4j等等。
- 简单点说,SpringData REST把我们需要编写的大量REST模版接口做了自动化实现并符合HAL的规范.。
- HAL (HypertxtApplication Language) 是一个被广泛采用的超文本表达的规范
- 官方文档: https://www.springcloud.cc/spring-data-rest-zhcn.html
简单来说,比如我们用jpa创建了实体类Users。我们创建一个UserRepositoriy,并实现JpaRepository,添加@RepositoryRestResource注解,就可以省去Controller,直接拿到数据。
@RepositoryRestResource(path = "users")
public interface UserRepositoty extends JpaRepository<UserEntity, Integer> {
}
然后我们访问localhost:8080/users,就可以拿到相关数据了。
Spring Session
提供一组api和实现来管理用户session,比如同域名下不同项目的session共享等。
Rest Repositories HAL Explorer
在浏览器中查看rest存储库。
JSON 超文本应用程序语言(HAL) 是一种简单的格式,它提供了一种一致且简单的方法来在我们的 API 中的资源之间进行超链接。
Spring HATEOAS
Richardson提出的REST成熟度模型,该模型把 REST 服务按照成熟度划分成 4 个层次:
- 第一个层次(Level 0)的 Web 服务只是使用 HTTP 作为传输方式,实际上只是远程方法调用(RPC)的一种具体形式。SOAP 和 XML-RPC 都属于此类。
- 第二个层次(Level 1)的 Web 服务引入了资源的概念。每个资源有对应的标识符和表达。
- 第三个层次(Level 2)的 Web 服务使用不同的 HTTP 方法来进行不同的操作,并且使用 HTTP 状态码来表示不同的结果。如 HTTP GET 方法来获取资源,HTTP DELETE 方法来删除资源。
- 第四个层次(Level 3)的 Web 服务使用 HATEOAS。在资源的表达中包含了链接信息。客户端可以根据链接来发现可以执行的动作。
项目中对于RESTful层级的选择要灵活把控,现在最常用的就是level2这个层次。
Spring Web Services
是Spring社区的一个产品,专注于创建文档驱动的Web服务。 Spring Web Services旨在促进契约优先的SOAP服务开发,允许使用多种方式之一来操作XML有效负载来创建灵活的Web服务。
Template Engines
Thymeleaf
Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。
Security
Spring Security
用于用户认证和授权
SQL
MyBatis Framework
依赖说明:支持自定义SQL、存储过程和高级映射。MyBatis 使用 XML 描述符或注解将对象与存储过程或 SQL 语句耦合。
MyBatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程,它使用了ORM思想实现了结果集的封装。
所有必要的依赖如上。
项目基本结构
以上为创建新项目的步骤。
后边会介绍怎样创建一个helloworld程序,部署运行等。