SpringBoot项目创建与属性赋值说明
1.idea新建springboot项目
2.SpringBoot项目配置说明
2.1SpringBoot Pom.xml文件说明
1 ##利用parent标签,springboot项目整合了其他框架的包及具体的配置都在parent中进行了定义,定义了版本包信息## 2 <parent> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-parent</artifactId> 5 <version>2.3.3.RELEASE</version> 6 <relativePath/> <!-- lookup parent from repository --> 7 </parent> 8 <groupId>com.dz</groupId> 9 <artifactId>springboot-demo1</artifactId> 10 <version>0.0.1-SNAPSHOT</version> 11 <name>springboot-demo1</name> 12 <description>Demo project for Spring Boot</description> 13 ##当前maven配置信息## 14 <properties> 15 <java.version>1.8</java.version> 16 ##制定maven插件版本## 17 <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> 18 ##跳过测试类打包## 19 <skipTests>true</skipTests> 20 </properties> 21 22 <dependencies> 23 ##项目依赖信息## 24 ##Maven:jar包具有依赖性## 25 <dependency> 26 <groupId>org.springframework.boot</groupId> 27 <artifactId>spring-boot-starter-web</artifactId> 28 </dependency> 29 30 <dependency> 31 <groupId>org.springframework.boot</groupId> 32 <artifactId>spring-boot-starter-test</artifactId> 33 <scope>test</scope> 34 <exclusions> 35 <exclusion> 36 <groupId>org.junit.vintage</groupId> 37 <artifactId>junit-vintage-engine</artifactId> 38 </exclusion> 39 </exclusions> 40 </dependency> 41 </dependencies> 42 ##maven项目制定的插件配置## 43 ##该插件主要负责maven项目相关操作## 44 ##打包/test/clean/update等相关maven操作## 45 ##注意事项:凡是maven项目则必须添加插件,否则将来项目部署必然出错## 46 <build> 47 <plugins> 48 <plugin> 49 <groupId>org.springframework.boot</groupId> 50 <artifactId>spring-boot-maven-plugin</artifactId> 51 </plugin> 52 </plugins> 53 </build> 54 55 </project>
2.2 SpringBoot项目如何做到开箱即用的
待补充,..
2.3 配置文件说明
2.3.1 pro文件说明
1 # pro配置文件语法说明 2 # 1.pro文件的结构是key-value结构 3 # 2.pro文件的值都是字符串结构. 无需添加引号"" 4 # 3.key value之间使用=号连接. 5 # 4.springBoot程序中的配置文件 必须有application.pro/yml 6 server.port=8090
2.3.2 关于YML文件说明
1 # yml配置文件语法 2 ## 1.key: value k-v结构使用:号(空格)连接 3 ## 2.YML配置文件有层级关系. 4 ## 3.YML配置文件注意缩进. 5 ## 4.YML文件支持中文.内部编码是utf-8编码 6 server: 7 port: 8090 8 9 # 设定项目发布路径 10 servlet: 11 context-path: /jt 12 # /代表缺省值目录
2.3.3 缺省值目录的说明
缺省值为/实际对应的是tomcat服务器中
apache-tomcat中的webapps中的ROOT文件夹
/jt发布目录为apache-tomcat中的webapp中的jt文件夹
访问地址时:http://localhost:8090/jt.
3. SpringBoot属性赋值
3.1 @Value方式赋值
1.编写yml文件
1 # yml配置文件语法 2 ## 1.key: value k-v结构使用:号(空格)连接 3 ## 2.YML配置文件有层级关系. 4 ## 3.YML配置文件注意缩进. 5 ## 4.YML文件支持中文.内部编码是utf-8编码 6 server: 7 port: 8090 8 9 # 设定项目发布路径 10 servlet: 11 context-path: / 12 # /代表缺省值目录 13 14 # 在配置文件中添加属性和属性值,为了防止重名发生,则添加前缀区分 15 jdbc: 16 username: root 17 password: root
2.编写JDBCController实现属性赋值
1 @RestController //保证返回的数据转化为JSON 2 public class JDBCController { 3 4 //1.需求:利用YML配置文件的信息为属性赋值 5 //@Value作用: 从spring容器中找到具体的key,为属性赋值. 6 @Value("${jdbc.username}") //spel表达式 spring提供 7 private String username; //定义数据库用户名 8 9 @Value("${jdbc.password}") 10 private String password; //定义数据库密码 11 12 @RequestMapping("/getMsg") 13 public String getMsg() { 14 15 this.username = "root"; 16 this.password = "root"; 17 return username+"|"+password; 18 } 19 20 @RequestMapping("/getMsgValue") 21 public String getMsgValue() { 22 23 return username+"|"+password; 24 } 25 26 }
3.2 批量为属性赋值
有时某些配置可能需要很多的属性信息。如果这时利用@Value的方式赋值,则必然导致代码冗余,可读性差
所以需要采用批量赋值的方式
1.添加jar包依赖
1 <!--添加属性注入--> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-configuration-processor</artifactId> 5 <optional>true</optional> 6 </dependency>
2.编辑JDBCController2
1 @RestController 2 @ConfigurationProperties(prefix = "jdbc")//定义属性的前缀 3 public class JDBCController2 { 4 //批量为属性赋值时,要求配置文件的属性与类中的属性名称必须一致,自动的赋值 5 private String username; 6 private String password; 7 //为属性赋值时,一定会调用对象的set方法 8 @RequestMapping("/getMsgPrefix") 9 public String getMsgPrefix(){ 10 return username+"|"+password; 11 } 12 13 public String getUsername() { 14 return username; 15 } 16 17 public void setUsername(String username) { 18 this.username = username; 19 } 20 21 public String getPassword() { 22 return password; 23 } 24 25 public void setPassword(String password) { 26 this.password = password; 27 } 28 }
3.3 制定文件为属性赋值
YML配置文件是SpringBoot程序的核心文件,在其中添加了整合环境的重要配置
如果有时需要业务数据进行赋值操作时,最好的方式应该采用properties的方式赋值。
1.编写pro配置文件
注意编码为utf-8
文件位置在resources中的properties文件中的jdbc.properties
1 jdbc2.username=root用户名 2 jdbc2.password=root密码
2.编写JDBCController
1 @RestController//保证返回的数据转化为JSON 2 @PropertySource(value = "classpath:/properties/jdbc.properties",encoding = "UTF-8") 3 public class JDBCController { 4 //利用yml配置文件的信息为属性赋值 5 //@Value作用:从spring容器中找到具体的key为属性赋值 6 @Value("${jdbc2.username}")//spel表达式 spring提供 7 private String username;//定义数据库用户名 8 @Value("${jdbc2.password}") 9 private String password;//定义数据库密码 10 @RequestMapping("/getMsg") 11 public String getMsg(){ 12 this.username = username; 13 this.password = password; 14 return username+"|"+password; 15 } 16 @RequestMapping("/getMsgValue") 17 public String getMsgValue(){ 18 return username+"|"+password; 19 } 20 }
3.4 热部署配置
1 <!--支持热部署 --> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-devtools</artifactId> 5 </dependency>
4. 环境部署问题
4.1 场景
去公司上班,公司分为生产环境和测试环境,平时操作的时候在测试环境运行。
测试环境,端口号8080 用户名=root 密码=root
生产环境,端口号80 用户名=dz 密码=dz
由于工作的需要,需要在两个环境中切换
如何简化操作
4.2 解决思路
公司有多个运行环境,将不同的运行环境进行规划,切换环境的时候,只需要修改环境的名称即可
4.3 编写yml配置文件
1 #设置环境的默认值 2 spring: 3 profiles: 4 active: test 5 --- 6 #yml配置文件语法说明 7 # 1.yml文件的结构是key: value结构,k-v使用:(空格)连接 8 # 2.yml配置文件有层级关系 9 # 3.yml配置文件注意缩进 10 # 4.yml文件支持中文,内部编码是utf-8编码 11 #为环境定义名称 12 spring: 13 profiles: test 14 server: 15 port: 8090 16 #设置项目发布路径 17 servlet: 18 context-path: /JT 19 #context-path: / 代表缺省值目录 20 #在配置文件中添加属性和属性值,为了防止重名发生,添加前缀区分 21 jdbc: 22 username: root 23 password: root 24 --- 25 spring: 26 profiles: prod 27 server: 28 port: 80 29 servlet: 30 context-path: / 31 jdbc: 32 username: dz 33 password: dz
Lombok校验
添加jar包文件
1 <!--引入插件lombok 自动的set/get/构造方法插件 --> 2 <dependency> 3 <groupId>org.projectlombok</groupId> 4 <artifactId>lombok</artifactId> 5 </dependency>
Lombok常用注解
@Data:动态生成get/set/toString
@NoArgsConstructor:动态生成无参构造
@AllArgsConstructor:动态生成全参构造
@Accessors(chain=true):生成链式加载结构
Lombok面试题
问题:通过Lombok可以添加set/get/toString等方法。但是需要运行环境中添加lombok插件才行。如果将来程序在Linux系统中发布,是否需要提前安装Lombok插件
答:不需要,Lombok插件在编译器生效。IDE工具将.java文件编译为.class文件时,lombok插件开始工作,为.class文件动态拼接get/set/yoString等方法,所以程序在linux中运行时,xxx.jar项目(.class)文件,可以直接运行和lombok是否安装无关。