SpringBoot项目
maven的.pom文件信息
maven的基本信息
1.maven坐标
<!--项目maven的基本信息
坐标:1.组ID 公司域名倒写
2.项目名称 名称不能重复 不能数字开头
3.项目版本
坐标意义:
1.主要用来用来管理/区分项目
2.项目的打包路径就是坐标的位置.
-->
<groupId>com.jt</groupId>
<artifactId>springboot_demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo1</name>
<description>Demo project for Spring Boot</description>
2.maven命令
常规用法:
- 配置maven环境变量
- 通过dos命令窗口 执行命令.(现在已经不用了)
idea插件方法
- clean 清空项目编译之后的文件class(位于target目录中)
- install 将项目中的target中的class进行打包 xxx.jar包
- install时会将测试类一同打包.所以需要注意代码正确性.
跳过测试类打包
<properties>
<java.version>1.8</java.version>
<!-- 项目打包跳过测试代码 -->
<skipTests>true</skipTests>
</properties>
3.pom文件中标签
3.1.parent标签作用
<!--
定位: SpringBoot主要的作用整合SSM,使得框架的使用更加简化
原则: "开箱即用"
parent主要的作用:
1.SpringBoot在内部兼容了当下几乎所有的第三方框架
2.SpringBoot官网已经将所有兼容的版本进行了定义
(几乎解决了版本冲突问题)以后几乎不写版本号
概括: parent标签中管理其他的项目版本信息.
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/>
</parent>
3.2.dependency标签
按照需求导入需要的依赖(导包)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<!--springboot的启动项
在包的内部Springboot已经完成了项目的”整合“(配置)用户拿来就能用-->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3.3.build标签
SpringBoot项目与maven整合的一个插件
可通过插件 执行项目打包/测试/文档生成等操作报错
注意事项:该插件不能省略
如果省略发布时报错 报错:项目没有主清单信息!
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
</plugins>
</build>
4.properties 语法说明
SpringBoot默认的配置文件application.properties文件
#数据结构: KEY-VALUE
#数据类型: String类型/Number数值
#语法: 1.key-value使用=号连接
2.不需要添加多余的""号
3.pro文件在IDEA中的编码格式UTF-8(手动可改)
pro文件在被程序读取时默认采用ISO-8859-1格式,中文必定乱码
4.key=value不要出现多余的空格
server.port=8090
5.YML文件语法
application.yml(最好使用yml作为核心配置文件)
#YML文件语法
#数据结构 key-value
#数据类型 String/Number
#语法
# 1.key:(空格)value
# 2.key与key之间有层级关系,注意缩进
# 3.字符采用utf-8
# 4.key=value不要出现多余的空格
# 5.可读性较pro文件 更加便捷
server:
port: 8090
6.注解
6.1.为属性赋值意义
为属性赋值意义
1.实现了.java文件与属性赋值的解耦
2.为了实现特定的业务的赋值.
3.SpringBoot整合第三方框架时,如果需要额外的配置文件时,常常采用上述的操作实现. 方便扩展
Redis为属性赋值操作
6.1.新学注解
@value(${key}) 从Spring容器内部为属性赋值,语法:spel表达式 ${key} (不要放在核心配置文件yml中,创建一个properties文件)
@PropertySource(value =“classpath:/person.properties”,encoding = “UTF-8”) (创建出来的properties文件项目不认识,需要@PropertySource注解,value ="classpath:/person.properties"为路径,encoding = "UTF-8"改变编码格式,中文不报错)
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 1.接收用户发起的请求
* 2.响应用户JSON串
* 1.@ResponseBody 可以将对象转化为JSON串
* 2.如果返回值为String类型,则返回本身
*/
@RestController
//Spring启动时候,动态添加配置文件 一般需要修改字符集
//关于注解赋值:1.必须满足key-value结构
// 2.如果属性只有一个,并且是value属性,则可以省略不写
// 3.如果还是乱码,检查idea Pro字符集的编码格式
@PropertySource(value ="classpath:/person.properties",encoding = "UTF-8")
public class HelloController {
// private String day = "1天";
/**
* 从Spring容器内部为属性赋值
* 语法:spel表达式 ${key}
*/
@Value("${user.day}")
private String day ;
@Value("${person.name}")
private String name;
@RequestMapping("get")
public String day(){
return "下雨"+day+name;
}
}
properties文件代码
user.day=1天
person.name=王狗蛋
6.2.注解赋值
注解赋值:1.必须满足key-value结构
2.如果属性只有一个,并且是value属性,则可以省略不写
3.如果还是乱码,检查idea Pro字符集的编码格式
7.热部署
开发阶段:码农编码阶段(热部署存在阶段)
生产阶段:甲方将项目实际上线阶段
1.导入依赖
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
2.配置idea
ctrl+shift+alt+/ —> Registry ----->
8.lombok依赖
1.先去下插件
2.在导入依赖
@Data //(get set tostring …)
@NoArgsConstructor//无参构造函数
@AllArgsConstructor//全参数构造函数
@Accessors(chain = true) //链式编程
<!--支持lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
9.阿里云镜像地址
<!--阿里云镜像-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
10.单元测试依赖
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>