文章导航-readme

一、配置Spring Boot热部署

    技术的发展总是因为人们想偷懒的心理,如果我们不想每次修改了代码,都必须重启一下服务器,并重新运行代码。那么可以配置一下热部署。有了它之后,修改了代码只需要重新build一下,就可以看到效果了,不需要重启服务器。

1.配置热部署

  1. pom.xml文件中添加如下依赖:
        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId> <optional>true</optional>
</dependency>
  1. 修改pom.xml文件
 <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--开启热部署-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>

修改pom.xml文件后,idea会弹出一个让你自动导入包的文件,点击Import Changes。就会自动将jar包下载到依赖库中。

如此,就实现了Spring Boot的热部署,此时修改我们的代码,只需重新Build一下就可以了。

2. 配置自动build

当然,如果你更懒的话,练build都不想做,也可以在Idea中配置自动Build(自动Build仅支持Spring Boot项目)。

  1. 打开Idea->File->Settings...可以看到如下界面

选中上图中的Build Project automatical

  1. 按组合键Shift+ALT+Ctrl+/选择Registry可以看到如下界面

选中上图中的complier.automake.allow.when.app.running

如此,修改我们的代码后,无需重新build也无需重新重启。

二、Spring Boot读取配置文件

  1. 修改我们的配置文件application.properties
server.port=8888

<!--网站配置-->
website.name=Loading
website.domin=www.loading.ink
website.title=我的博客网站
website.description=分享我的生活和技术
  1. 新建配置文件类WebSiteConfig
package spring.boot.web.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; import java.text.MessageFormat; @Configuration
//@ConfigurationProperties(prefix = "website")
//要读取的配置文件地址
@PropertySource(value = "classpath:application.properties")
public class WebSiteConfig {
@Value("${website.title}")
private String title;
@Value("${website.domain}")
private String domain;
@Value("${website.description}")
private String description; public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getDomain() {
return domain;
} public void setDomain(String domain) {
this.domain = domain;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
} @Override
public String toString() {
return MessageFormat.format("Title:{0} Domin:{1} Description:{2}", title, domain, description);
}
}

读取配置文件中的配置有两种方式

1.@ConfigurationProperties(prefix = "website")用于绑定属性,其中prefix表示所绑定的属性的前缀。如果配置文件中的配置和属性名一致可以用此种方式

2.@Value("${website.title}") 绑定配置文件中的属性

注意:

注解@Configuration用于定义配置类

注解@PropertySource(value = "classpath:application.properties")代表要读取配置文件的路径当配置文件是application.properties时,这个注解可以省略不写

  1. 新建WebSiteController
package spring.boot.web.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import spring.boot.web.config.WebSiteConfig; @RequestMapping("/website")
@RestController
public class WebSiteController { //通过@Autowired注解注入bean
@Autowired
private WebSiteConfig webSiteConfig; @RequestMapping(method = RequestMethod.GET)
public String get() {
return webSiteConfig.toString();
}
}
  1. 测试运行

  1. 注意,如果第一次运行时遇到读取配置文件里的中文乱码的问题。其主要原因可能是因为配置文件的格式并不是utf-8的格式。此时可在idea中进行设置。

如上图所示更改为uft-8,注意后面的一定要勾选上。

通过上面配置后如果还不行,可以将配置文件删除后重新建一个,问题就可以解决!

三、Spring Boot Profile

    Spring Boot 使用一个全局的配置文件 application.properties ,Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

    在日常开发中,我们常常会遇到一个问题。就是在不同的环境使用不同的配置。比如生产、开发、测试三个不同的环境,我们的配置肯定不一样。这时,我们就要用到Profile。

    Profile 是 Spring 用来针对不同的环境对不同的配置提供支持的,全局 Profile 配置使用 application-{profile}.properties (如 application-dev.properties)。通过在 application.properties 中设置 spring.profiles.active = dev 来指定活动的 Profile

  1. 依次再目录下面新建三个配置文件,application-dev.propertiesapplication-test.propertiesapplication-prod.properties。它们分别代表开发环境、测试环境、生产环境的配置文件。
server.port=8887

website.title=我的博客网站--Dev
website.domain=www.loading.ink
website.description=分享我的技术与生活
server.port=8886

website.title=我的博客网站--test
website.domain=www.loading.ink
website.description=分享我的技术与生活
server.port=8885

website.title=我的博客网站--prod
website.domain=www.loading.ink
website.description=分享我的技术与生活
  1. 接下来修改application.properties:表示,将采用application-dev.properties这个配置文件。
spring.profiles.active=dev

测试运行我们可以看到会启动开发环境配置文件的端口8887

注意:配置文件会优先获取Profile中的配置,如果Profile中没有的配置项, 那么会直接取application.properties中的配置

示例代码

Spring Boot(二) 配置文件的更多相关文章

  1. Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控

    Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控 Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含: ...

  2. Spring Boot 二十个注解

    Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...

  3. Spring Boot 的配置文件application.properties

    Spring Boot 中的application.properties 是一个全局的配置文件,放在src/main/resources 目录下或者类路径的/config下. 作为全局配置文件的app ...

  4. Spring Boot之配置文件值注入(@ConfigurationProperties)

    前言:Spring Boot配置文件值的注入有两种方式,分别是 @ConfigurationProperties @Value 这里我们使用第一种 首先我们创建一个application.yml文件, ...

  5. Spring Boot属性配置文件:application.properties 详解

    学习资料 网址 官方说明文档 https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-pro ...

  6. 一:Spring Boot 的配置文件 application.properties

    Spring Boot 的配置文件 application.properties 1.位置问题 2.普通的属性注入 3.类型安全的属性注入 1.位置问题 当我们创建一个 Spring Boot 工程时 ...

  7. Spring Boot 核心配置文件 bootstrap & application

    Spring Boot 核心配置文件 bootstrap & application 1.SpringBoot bootstrap配置文件不生效问题 2.bootstrap/ applicat ...

  8. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件

    精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件 内容简介:本文介绍 Spring Boot 的配置文件和配置管理,以及介绍了三种读取配置文 ...

  9. spring boot全局配置文件优先级

    前两篇介绍的application配置文件,即为spring boot全局配置文件.那么spring boot加载配置文件的时候,怎么确定加载哪个目录下哪个文件呢? spring boot默认的配置文 ...

随机推荐

  1. js全选与取消全选

    实现全选与取消全选的效果 要求1(将军影响士兵):点击全选按钮,下面的复选框全部选中,取消全选按钮,下面的复选框全部取消 思路:复选框是否被选中,取决于check属性,将全选按钮的check属性值赋值 ...

  2. C++通过宏定义判断操作系统及编译器

    INTRODUCTION: C++的编译环境千奇百怪,很多时候一些代码在某些编译环境下可用,一旦移到其他环境下,就会干脆Compile Error 对此,我们可以使用C++的宏定义来判断操作系统,从而 ...

  3. Android进阶之绘制-自定义View完全掌握(四)

    前面的案例中我们都是使用系统的一些控件通过组合的方式来生成我们自定义的控件,自定义控件的实现还可以通过自定义类继承View来完成.从该篇博客开始,我们通过自定义类继承View来实现一些我们自定义的控件 ...

  4. vue中组件通信

    组件的通信 1. 父子组件通信 案例:   //父子组件通信思路 // 1 将父组件的数据传给子组件 在子组件上自定义单项数据绑定 // 2 子组件用props 接受自定义的那个:号属性 Vue.co ...

  5. Cassandra查询操作趟坑记录

    例子表 CREATE TABLE employee ( name TEXT, age SMALLINT, phone TEXT, bornDate DATE, createDate timestamp ...

  6. RANSAC简史

    前言 在进行泡泡机器人[图灵智库]栏目的翻译的过程中,我发现在2018-2019的顶会中,依然有很多文章(我看到的不少于6篇)对RANSAC进行各种改进,这令我感到很吃惊.毕竟该方法在1981年就被提 ...

  7. go语言实现分布式对象存储系统之单体对象存储

    对象存储 基本概念 主流存储类型分为三种:块存储.文件存储以及对象存储 NAS(文件存储):Network Attached storage,提供了存储功能和文件系统的网络服务器,客户端可以访问NAS ...

  8. HDU 6313

    题意略. 思路:数论题. #include<bits/stdc++.h> using namespace std; ; const int maxn = p * p; ][maxn + ] ...

  9. 04_枚举类型iota

    iota是枚举类型的关键字,使用iota可以方便快捷的给常量赋值,主要体现在以下几个方面:1.iota常量自动生成器,每个一行加12.iota给常量赋值使用3.iota遇到const重置为04.可以写 ...

  10. MSIL实用指南-生成内部类

    生成内部类用TypeBuilder的DefineNestedType方法,得到另一个TypeBuilder.内部类的可访问性都是TypeAttributes的“Nested”开头一些成员.实例代码:y ...