《Spring Boot 实战派》--01 Spring Boot基础

本文记录的是《Spring Boot 实战派》--让开发像搭积木一样简单

---龙中华

 

1. 认识Spring Boot

 建立高阶的思维方式:

一般情况下,框架都有错误的反馈机制,例如: 通过日志或者控制台输出错误或提示信息。所以,在遇到问题或报错时,不要急于去搜索,更不要急于提问,一定要仔细地查看程序的报错信息或提示反馈;

学会自己发现和解决问题:

首先:要发现问题所在,一般通过“cause by”字样提示出现的位置,还可以查看“type” 和 “status”;

然后思考解决办法:搜索引擎--》 搜索问题的关键字

 

2. 准备开发环境

 1. 打开oracle开发网站

2.选择适合自己电脑系统(32位或64位)的版本进行下载

3. 安装包下载完成后,双击后缀名“.exe”的文件,然后按照提示一次单击“下一步”按钮,完成安装;

4. 配置jdk路径

5. 安转及配置maven

  打开Maven官方网站

  单击“apache-maven-3.6.0-bin.zip”下载文件

  配置maven的环境变量

  检查安装情况: mvn -v

6. 认识pom.xml文件

  <dependency>与</dependency>之间有三个标识:

  groupId : 定义隶属的实际项目

  artifactId : 定义项目中的一个模块

  version : 依赖或项目的版本号

  

  scope : 如果有一个在编译时需要而发布时不需要的Jar包,则可以用scope标签标记该包,并将其值设为provided

  scope标签的参数如下:

参数                   描述
compile             scope的默认值,标识被依赖项目需要参与当前项目的编译、测试、运行阶 
                     段。打包时也要包含进去

povided             provided表示打包时可以不用打包进去,web container会提供。该依赖理    
                    论上可以参与编译、测试、运行周期


runtime             表示dependency不作用在编译阶段,但会作用在运行和测试阶段,如JDBC 
                   驱动使用运行和测试阶段


system              和provided相似,但是在系统中要以外部Jar包的形式提供,Maven不会在 
                   repository中查找它  


test                表示dependency作用在测试阶段,不作用在运行阶段。只在测试阶段使用, 
                  用于编译和运行测试代码,不会随项目发布

  

   properties :如果要使用自定义的变量,则可以在<properties>和</properties>元素中进行变量的定义

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <solr.version>8.0.0</solr.version>
</properties>

  如果要使用上面定义的变量,可以通过表达式“${变量名}”来调用

<dependency>
   <groupId>org.apache.solr</groupId>
   <artifactId>solr-solrj</artifactId>
   <version>${solr.version}</version>
</dependency>

  

  plugin: 

  在创建Spring Boot项目时,默认提供了sprin-boot-maven-plugin插件。它提供打包时需要的信息,将Spring Boot应用打包为可执行的JAR或WAR文件;

 

  完整的pom.xml文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- 模型版本,声明项目描述符遵循哪一个POM模型版本,模型版本很少改变,但是它是必不可少的,
    这是为了Maven引入特性或其他模型变更时,确保稳定性-->
    <modelVersion>4.0.0</modelVersion>
    <!-- 父项目的坐标,如果项目没规定某个元素的值,那么父项目中的对应值即为项目的默认值,坐标包括groupId、artifactId、version-->
    <parent>
        <!-- 被继承的父项目的唯一标识符-->
        <groupId>org.springframework.boot</groupId>
        <!-- 被继承的父项目的构件标识符-->
        <artifactId>spring-boot-starter-parent</artifactId>
        <!-- 被继承的父项目的版本号-->
        <version>2.5.0.RELEASE</version>
        <!-- 父项目的pom.xml文件的相对路径,相对路径允许一个不同的路径,默认值是../pom.xml
        Maven 先在构建当前项目的地方寻找父项目的pom, 然后在文件系统的relativePath位置寻找(如果没找到,则继续在本地仓库寻找),
        最后再远程仓库中寻找父项目的pom
        -->
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!-- 公司或组织的唯一标志(项目的全球唯一标识符),并且配置时生成的路径也是由此生成的,通常使用全限定的包名区分该项目和其他项目,
    如com.companyname.project, Maven会将该项目生成的JAR包放在本地路径:/com/companyname/project
    -->
    <groupId>com.feng</groupId>
    <!-- 项目的唯一ID,一个groupId 下面可能有多个项目,靠artifactId来区分 -->
    <artifactId>springbootmybatis</artifactId>
    <!-- 版本号,格式为主版本.次版本.增量版本-限定版本号-->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目的名称,用于Maven产生的文档-->
    <name>springbootmybatis</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <!-- 项目开发的java版本号-->
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis启动器-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <!--mysql启动器-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--druid数据源-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- 构建项目(打包生成可执行文件)需要的信息-->
    <build>
        <!-- 项目使用的插件列表-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--配置Generator插件-->
            <plugin>
               <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.4.0</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
                <!--配置指定文件的路径-->
                <configuration>
                    <configurationFile>${project.basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
        <!--配置资源拷贝插件-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

</project>

  

在实际的项目中,如果要手动添加Maven仓库中没有的 JAR 包依赖, 要运行“ mvninstall:install file ”命令, Maven提供支持。如,添加 kaptcha 验证码依赖时,需要运行下
面的命令:
mvn install : install-file -Dfile= D:\java-20181216\kaptcha-2.3.2.jar  -Dgroupld=kcDgroupld  -Dartifactld=kcartifactld   -Dversion=0.0.1  -Dpackaging=jar

  

3. 使用开发工具

3.1 安装lombok插件

1. 先在idea的Plugins中安装Lombok插件

2. 添加lombok的依赖

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>

3.使用lombok注解

@Data: 自动生成Getter/Setter、toString、equals、hashCode方法,以及不带参数的构造方法

@NonNull : 帮助处理NullPointerException

@CleanUp : 自动管理资源,不用再在finally中添加资源的close方法

@NoArgsConstructor : 自动生成构造方法

    AllArgsConstructor : 自动生成构造方法

    RequiredArgsConstructor : 自动生成构造方法

@Value : 用于注解final类

@Builder : 产生复杂的构建器API类

@SneakyThrows : 用于处理异常

@Synchronized : 同步方法的转化

@Log : 支持使用各种日志(logger)对象。只要在使用时,用对应的注解进行标注,比如使用Log4j作为日志库,则在需要加入日志的位置写上注解@Log4j即可

 

3.2 打包成可执行的JAR包

   项目开发完成后,可以直接用Idea将其打包成JAR包运行,也可以打包成WAR包

 在这里以打包成JAR包为例:

(1)单击 IDEA 菜单栏的 File ->project struct  ->artifacts 命令,单击界面上的 "+"按钮,选择 JAR,然后选择“ From modules with dependencies "。
  (2)在弹出的窗口中 , 在Main Class 框中选择入口类“ com.example.demo.HelloWorldApplication" ,单击 OK 按钮,在切换回来的窗口中, 再单击 OK 按钮
  (3)单击IDE开发工具右侧的“ Maven构造”按钮, 在弹出的窗口中单击“ lifeCycle  -> clean " 命令, IDEA就会运行“clean"命令,此时控制台会有执行情况提示
  (4)根据控制台提示,稍等一会儿 , 等待提示完成之后,继续单击 IDEA 开发工具右侧的“Maven 构造”按钮, 在弹出的窗口中单击“lifeCycle --> package ”命令,等待控制台提示,当提示完成时,代表 JAR 包被打包成功
  (5)在打包成功后,控制台输出下方信息。 可以根据这个控制台的提示找到 JAR 包的位置,Building jar: ”后的值就是 JAR 包的地址。
[INFO)一- maven 「- plugin:3 1.1 :ja 「( default-ja 「)@ demo 一-
[INFO) Building jar: D:\2018\java\book\book code\HelloWorld\target\demo-0.01-SNAPSHOT.Jar
[INFO) --- spring-boot-maven-plugin:2.1.3 RELEASE :repackage(repackage) @ demo 
[INFO] Replacing main tifact with epackaged chive
[INFO) BUILD SUCCESS

(6)进入这个目录,在地址栏输入“cmd ”命令,在弹出的 cmd 命令窗口中 输入如下命令:

java -jar demo-0.01-SNAPSHOT.Jar

  

 

3.3 智能提示代码

  编辑器一般都会提供基本的提示功能, 以快速提示可用的方法、变量等。 IDEA也有,而且做得比其他同类开发工具更好。
在IDEA中使用“ Ctrl + Space" 快捷键, 可以实现快速提示。
除最基本的代码提示功能外,IDEA还提供了更加智能的代码提示功能,可以做到基于上下文环境智能匹配使用的方法。该快捷键为“Ctrl+ Shift+Space ”。
修改快捷键的方法如下。
  (1)单击IDEA菜单栏中的“File --> Settings -->keymap --> Main Menu -->Code -->Completion”命令,打开设置窗口,如图所示

 

 

 

  ( 2)选中“ Basic ”选顷,单击鼠标右键,在弹出的菜单中选择“ Remove Ctrl +Space "选顶,先移除原来的快捷键,接着再次用鼠标右击“Basic ”选项,
在弹出的菜单中选择"Add Keyboard Shortcut ”命令,在弹出的窗口中输入想要的快捷键。如果快捷键存在,则会提示“ Already assigned to”,需要修改或更新。

 

3.4 自动提示参数

  IDEA 的自动提示参数非常方便好用。 如果使用的方法参数过多,则只要将光标放置在需要放入参数的位置,等待一会儿, IDEA 就会进行智能提示 。
如果并不想等待,则可以在万法内使用 “Ctrl+P ”快捷键。

 

3.5 自定义高复用代码块

在开发过程中, 很多时候会存在着需要重复使用的代码, 为了便于快速复制、粘贴, 可以IDEA 的Live Template 保存这些代码片段,且可以自定义关键字。在使用时,
只需要输入关键字然后 按“ Enter ”键 ,即可直接输出代码块。
例如,在IDEA中输入“psvm 并按“Enter" 键(或按Tab 键),就会’快速 生成main方法。 生成的代码:
public static void main (String args) {

}

  

3.5.1  IDEA 提供的 Live Template
 
• sout : 快速生成 System.out. println ()”
• soutm :可以快速输出当前类和方法名“System.out.println (类名. 方法名)”。
• psfs :  快速输出“public static final String”。
• fori : 快速输出 for(int i=0; i <  ; i++) {}”
• ifn:可以快速输出  ”if(args == null) {}”。

 

3.5.2  IDEA 设置注释信息

  在开发过程中常需要设置注释信息, IDEA 提供了“file and code template ”模板,可以在新建代码时自动添加注释信息。
例如,添加作者注释信息的具体方法如下。
(1)打开 IDEA ,在菜单栏中选择“ File  --> Settings 命令
(2)在弹出的 Settings 窗口中单击“ Editor "按钮,在弹出的窗口中单击“file and code template ”按钮, 在窗口右侧,单击" includes ”按钮;
在右边的框中,输入下方注释作者信息的模报。

 

 

3.5.3  超能的“Alt + Enter”快捷键

  这是一个非常特殊的快捷键 ,简直是超能。 它的功能与光标所在位置有关,光标放的位置不同,使用此快捷键弹出来的菜单选项也不同,它的用法如下:
 •  对光标所在的对象进行包导入
 •  在接口类中,如果把光标放在已经在接口实现类中实现了的方法上,则此快捷键的效果是 “跳转"
 •  在接口实现类中添加一个方法后,可以让该接口类也自动生成
 •  给 Hibernate 的Entity 对象分配数据源,从而产生一系列智能功能。
 •  对当前光标所在类生成单元测试类
 •  对当前光标所在类创建子类。 常用在对接口生成接口实现类。 例如,选中服务接口名字,按” Alt+Enter”快捷键,在弹出的窗口中选择 " implements interface ”命令,可以快速创建服务实现类
 •  移除未使用的变量、对象等元素
 •  把自定义的单词加入词库中,可以让拼写单词检查错误的波浪线提示消失。
 
3.5.4  IDEA使用全局配置
1. 全局JDK
  在安装IDEA 时已经选择了 JDK ,如果想改变配置, 那么单击菜单栏中的“ File -->project Structure --> SDKs ”命令进行配置。
 
2. 全局 Maven
  由于 IDEA 提供的Maven 版本较老, 所以可能需要修改版本。
  在菜单栏中选择“ File --> Other Settings --> Settings for New Projects --> Build & Tools  -->Maven ”命令,在弹出的窗口中,修改默认的 Maven 安装目录和自定义设置文件路径(根据自己的情况)
 
3. 全局版本控制 Git/Svn
  选择“ File -->Settings ---> Version Control  -->Git ”命令 行设置。IDEA 置的 Git 插件非常好用,Git客户端可以使用 SourceTree。
 
4. 自动导包与智能移除
  如果没有进行全局设置,则在新加入依赖之后, IDEA会自动提示是否” 自动导入包”。
  如果要设置,则可以选择“ File--> Other Settings --> Settings For  New Projects --->Other Settings ---> Autolmport ”命令进行设置。
 

3.6  IDEA 快捷键

  大部分快捷键都是可以自定义的 。如果有使用Eclipse 的经验, 则可以把IDEA 的快捷键设置成与 Eclipse 样的

 

 

4. Spring  Boot 基础

 4.1 spring boot 的项目结构

(1) src/main/java :入口(启动)类及程序的开发目录. 在这个目录下进行业务开发、创建实体层 控制器层、数据连接层等
(2) src/main/resources :资源文件目录,主要用于存放静态文件和配置文件
• static :用于存放静态资源,如层 样式表 CSS ( Cascading Style Sheets )文件、JavaScript 文件、图片等
• templates :用于存放模板文件
• application.properties :用于配置项目运行所需的配置数据 如果用 YAML方式管理配置,则YAML 文件也放在这个目录中
(3) src/test/java: 测试程序所在的目录(本书提供的源代码有一部分应该放在这里)
 
在创建 Spring Boot项目时,会自动创建一个用于启动的、名为“项目名+Application “的入口类,它是项目的启动入口, IDEA 中打开入口类之后,可以单击类或“main 方法左侧的三角
形按钮,通过弹出的选项来运行或调试 Spring Boot 应用程序。
 

4.2 Spring boot的自动配置

  Spring Boot 会根据配置的依赖信患进行自动配置,从而减轻开发者搭建环境和配置的负担, 如果在项目中依赖了 spring-boot-stater-web ,
则 Spring Boot会自动配置 Web 环境(配置Tomcat、WebMVC、Validator、JSON 等)。
Spring Boot 自动配置是通过注解@EnableAutoConfiguration来实现的 ,具有非入侵性。如果要查看当前有哪些自动配置,则可以使用下方的 “debug”调试命令:
Java  -Jar *.jar  -debug
  如果在 IDEA 中进行开发,则可以单击“run --> EditConfigurations"命令,在弹出的窗口中设置: "Program arguments ”参数为“--debug ”。在启动应用程序之后,
在控制台中即可看到条件评估:( CONDITIONS EVALUA ION REPORT).。
  如果不需要某些自动配置,则可以通过注解@EnableAutoConfiguration 的"exclude 或 excludeName ”属性来指定,或在配置文件( application.properties或 application.yml )
中指定 "spring.autoconfigure.exclude ”的值。
 
  热部署:
<dependency> 
    <groupld>org.springframework.boot</groupld>
    <artifactld>spring-boot-devtools</artifactld>
    <optional>true</optional> 
</dependency>

  该依赖在项目打包时会被禁用, 如果用“java -jar”命令启动应用程序,或使用一个特定的classloader启动应用程序,则 Spring Boot 会认为

这是一个“生产环境" ,所有不会运行。如果项目中使用了 Redis 作为缓存, 则 请禁止使用热部署,以免出现类型转换等问题。

 4.3 系统注解

  • Override:用于修饰方法,表示此方法重新了父类方法

  • Deprecated: 用于修饰方法,表示此方法已经过时,经常在版本升级后会遇到
  • SuppressWarnings: 告诉编译器忽视某类编译警告
 
下面重点介绍一下@SuppressWarnnings 注解 有以下几种属性
• unchecked :未检查的转化
• unused :未使用的变量。
• resource :泛型,即未指定类型。
• path :在类中的路径 原文件路径中有不存在的路径
• deprecation :  使用了某些不赞成使用的类和方法
• fallthrough:  switch 语句执行到底,不会遇到 break 关键字
• serial :实现了 Serializable 但未定义 serialVersionUID
• rawtypes :没离传递带有泛型的参数。
• all :代表全部类型的警告

 

 

注:
@RequestMapping 
   用来处理请求地址映射,用在类或方法上 。如果用在类上,则表示类中的所有响应请求的方法都是以该地址作为父路径的;
该注解有6个属性:
• Params :指定 Request 中必须包含某些参数值才让该方法处理。
• Heade :指定 Request 中必须包含某些指定的header值,才能让该方法处理请求。
• Value :指定请求的实际地址,指定的地址可以是URI Template 模式。
• Method :指定请求的 Method 类型,如 GET、POST、 PUT、 DELETE。
• Consumes :指定处理需求的提交内容类型 Content-Type ,如 application/json ,text/html ”。
• Produces :指定返回的内容类型。只有当 Request 请求头中的 Accept 类型中包含该指定类型时才返回
 
@Transactional
  它可以用在接口、接口方法、类及类方法上。
但Spring 不建议在接口或者接口方法去上使用该注解,因为该注解只有在使用基于撞口的代理时才会生效,如果异常被捕获 (try { } catch {})了,则事务就不回滚了。
如果想让事务回滚,则必须再往外抛出异常( try { } catch { throw Exception })。
 
@Qualifier
  它的意思是“合格者 “,用于标注哪 一个实现类才是需要注入的。需要注意的是,@Qualifier的参数名称为被注入的类中的注解@Service 标注的名称。
@Qualifier常和@Autowired 一起使用,如以下代码:
@Autowired
@Qualifier("userService")

 而@Resource 和它不同,@ Resource 自带 name 属性。

 

使用在方法上的注解:

 

 

( 1 ) @RequestBody
  它常用来处理 JSON/XML格式的数据。通过@RequestBody 可以将请求体中的( JSON/XML)字符串绑定到相应的 Bean 上,也可以将真分别绑定到对应的字符串上。
举例:用AJAX(前端)提交数据,然后在控制器(后端)接收数据
在前端页面中使用 AJAX提交数据的代码如下:
$.ajax({ 
    url :  "/post",
    type : "POST", 
    data : '{"name":"longzhiran"}',
    //这里不能写成 content-type
    contentType:"application/json charset=uth-8"
    success:function(data){ 
        alert("request success!"); 
    }

});

  在控制器中接收数据的代码如下:

@RequestMapping(”/post”) 
public void post(@RequestBody String name){ 
    //省略
}

  

@ResponseBody
  它的作用是通过转换器将控制器中方法返回的对象转换为指定的恪式,然后写入 Response象的 body,常用来返回 JSON/XML 格式的数据
使用此注解后,数据直接写入输入流中,不需要进行视图渲染。用法见以下代码:
@GetMapping( "/test”) 
@ResponseBody 
public String test(){ 
    return "test";    
}

 

其他常用注解:  

 

 使用配置文件:application.yml

application.yml 文件中添加以下代码,以便在测试类中测试获取下面代码配置项的值:
server:
    port: 8080
    servlet:
       session:
         timeout: 30 
    tomcat: 
        uri-encoding: UTF-8 
age: 19 
name: zhaodabao 
personinfo:
    name: zhaoxiaobao 
    age: 3        

  代码解释如下

  • server:  定义服务器的配置。

  • port :定义要访问的端口是"8081"(默认端口是 8080)
  • timeout: 30" : 定义session的超时时间是30s
  • uri-encoding: UTF-8”:定义 URI 编码是 UTF-8 格式

 

编写单元测试:

用 获取配置文件中的配置项的值,并调用前缀为personInfo”的配置项的值
package com.feng.springbootmybatis;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
@RunWith(SpringRunner.class)
public class PropertiesTest {

    //获取配置文件中的age
    @Value("${age}")
    private int age;
    //获取配置文件中的name
    @Value("${name}")
    private String name;

    /**
     * 该注解表示一个测试方法
     */
    @Test
    public void getAge() {
        System.out.pintln(age);
    }

    @Test
    public void getName () {
        System.out.pintln(age);
    }
}

  代码解释如下

•@SpringBootTest :用于测试的注解,可指定入口类或测试环境等。
•@RunWith(SpringRunne.class ):在 Spring 测试环境中进行测试。
•@Test :表示一个测试方法
•@Value 获取配置文件中的值。
 
新建 GetPersonlnfoProperties
定义一个实体类,以装载配置文件的信息。并用于处理配置文件以personinfo为前缀的配置顶的值。
package com.example.demo;
@Component
@ConfigurationProperties(prefix="personinfo")
public class GetPersonlnfoProperties {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 @ConfigurationProperties :把同类配置信息自动封装成一个实体类。其属性prefix 代表配置文件中配置项的前缀,如在配置文件中定义的“ personinf。”

还可以把@ConfigurationProperties 直接定义在@Bean 的注解里,这时 Bean实体类就不需要@Component 和@ConfigurationProperties 注解了,在调用时依然一样调用。如以下代码:
@Bean
@ConfigurationProperties(prefix="personinfo")
public GetPersonlnfoProperties getPersonlnfoProperties() {
  return new GetPersonlnfoProperties();
}

 获取配置项的值:

@Autowired
private GetPersonlnfoProperties getPersonlnfoPropertiesp;
    
@Test
public void getPersonlnfoPropertiesp() {
   System.out.println(getPersonlnfoPropertiesp.getName()+getPersonlnfoPropertiesp.getAge());
}

  

使用 application. properties 文件
1.编写配置项
application.properties 文件中,添加下方配置项及其值,用于测试获取配置项的值
com.example.name=${name:longtao} 
com.example.age = 18 
com.example.address[O]=北京
com.example.address[1 ]=上海
com.example.address[2]=广州
2. 编写类文件处理配置顶
编写类文件,用于获取配置文件中配置项的值。
import lombok.Data; 
import org.springframewo boot.context.propertiesConfigurationProperties;
import org.springframework. stereotype. Component; 
import java.util.List; 

@Data 
@Component 
@ConfigurationProperties(prefix =”com.example”) 
public class CoExample{ 

   private String name; 
   private int age; 
   private List<String> addresp;

}
  • @Component :声明此类是 Sp ing 管理类。白常用在无法用@Service 、@Repositor 描述的 Spring 管理类上, 相当于通用的注解。
  • @ConfigurationProperties 注入 application. properties 配置文件中的配置项。
  • Data :自动生成 Setting、 Getting、 toString、equals、 hash Code 方法,以及不带参数的构造方法

 注意:

这里一定要注意编码,如果使用的是中文,则有可能出现乱码,请单击 IDEA 菜单栏中的“File --> Settings --> Editor--->File Encodings 命令, 然后将 Properties Files (*.properties) 
下的 " Defaul encoding for properties files " 设置为 UTF-8,并勾选 "Transparent native-to-ascii conversion"复选框。如果依然不行,则可以尝试删除文件,然后重新创建这个文件

  

使用 application.yml 和 application.properties 配置多环境
在实际项目的开发过程中,经常需要配置多个环境(如开发环境和生产环境),以便不同的环境使用不同的配置参数 本实例通过配置文件来实现多环境配置

 

1. 用application. yml 配置多环境
(1) 在 resources目录 新建3个YML配置文件
它们分别代表测试环境(application-dev.yml )、生产环境( application-prod.yml)、主配置文件( application.yml)
 
(2) 配置开发环境
application-dev.yml文件中输入以下代码:
port: 8080 
servlet: 
  session: 
    timeout: 30 
tomcat: 
  uri-encoding: UTF-8 
myenvironment:
  name:开发环境

(3)配置生产环境。

在application-prod.yml 文件中输入以下代码:

port: 8080 
servlet: 
  session: 
    timeout: 30 
tomcat: 
  uri-encoding: UTF-8 
myenvironment:
  name:生产环境

(4) 配置主配置文件。

在 application.yml 中,指定当前活动的配置文件为 application-dev.yml ,具体代码如下:
spring:
  profiles:
     active: dev

注:active命令表示当前设定生效的配置文件是dev (调试环境);如果要发布,则直接将active的值改为“prod“

如果要变更为生产环境,则将 application.yml 中的“active:dev ”改为"active: prod ”。
修改之后,再次运行测试 getMyEnvironment 方法
 
2. application.properties 配置多环境
(1) 和 YAML 配置方式一样,创建 application-dev.properies 、application-prod.properties、application. properties 三个配置文件, 它们分别代表开发环境、生产环境和主配置文件。
  ( 2)在主配置文件 application. properties 中配置当前活动选项,例如,要使用 “dev ”环境,
则配置以下代码:
spring.profiles.active=dev
当然,都可以在运行 JAR 包时指定配置文件。如果要在启动时指定使用 置文件, 则可以输入以下代码运行:
java  -jar  name.jar  --spring.profiles.active=prod

  

4.4 Spring Boot starter

如采要查看全部的Starter ,可以访问官网:https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#using-boot-starter
 
使用Starter
如果依赖项没有版本号,则 Sprin Boot 会根据自己的版本号自动关联。 如果需要特定的版本,则需要加 version 元素
 
 
posted @ 2022-04-22 11:31  IT6889  阅读(196)  评论(0编辑  收藏  举报