SpringBoot个性化配置的方法步骤

 更新时间:2019年02月01日 09:42:02   作者:吉林乌拉  
这篇文章主要介绍了SpringBoot个性化配置的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在上一篇中我们简单的介绍了SpringBoot项目的创建及其启动方式。在这一篇中我们主要介绍一下SpringBoot项目的个性化配置。因为通过上一篇中知识我们知道SpringBoot项目的默认端口为8080,那如果我要修改这个默认端口,应该怎么改呢?又比如SpringBoot项目在启动时,默认是没有项目名字的,那如果我们想要添加自己喜欢的项目名字又该怎么办呢?这些都在这一篇的内容中。好了,下面我们详细介绍一下怎么修改SpringBoot项目中的默认配置。

修改默认端口

在上一篇的SpringBoot项目中我们看到在resources目录中有一个application.properties文件,这个文件就是让我们个性化配置SpringBoot项目参数的,也就是说,在这个文件中按照SpringBoot为我们提供的参数名,就可以直接修改SpringBoot项目的默认参数。下面我们尝试修改SpringBoot项目的默认端口。具体修改如下:

在application.properties文件中添加下面的参数,然后,启动application.properties文件项目即可。

server.port=8081

并且如果我们使用IDEA开发工具时,当我们在在application.properties文件中输入参数时,IDEA就会自动为我们提供相关参数提示,这样方便我们修改。也就是如下图所示:

这时我们启动SpringBoot项目并且用8080端口访问项目时,发现已经找不到服务了。

而如果我们用访问8081端口访问项目,则发现服务可以正常访问。这就说明,我们已经成功将SpringBoot项目的默认端口修改为8081端口了。

虽然上面的方式已经成功的修改了SpringBoot项目的默认参数,但在实际的开发中,并不推荐使用application.properties文件的方式修改,因为在SpringBoot项目中有更推荐的方式。也就是使用yml文件的方式。

application.yml文件

使用yml文件的方式修改默认参数,也比较简单,也就是把application.properties文件文件修改为application.yml文件即可。唯一不同的方式,就是yml文件有自己独特的语法,和properties文件不同,可以省略很多参数,并且浏览比较直观。下面我们尝试用yml文件的方式,将SpringBoot的端口修改为8082端口。

启动项目后访问刚刚的8081端口,发现项目已经访问不了。

这时我们访问8082端口,发现项目访问又正常了,这就说明我们使用yml的方式修改SpringBoot的默认参数方式成功了。

如果我们访问http://localhost:8082/jilinwu...地址,即可看到SpringBoot接口返回的数据。

修改默认项目名

下面我们还将使用yml的方式配置SpringBoot项目的项目名。具体参数如下:

server:
 port: 8082
 context-path: /springboot

我们继续启动项目然后依然访问http://localhost:8082/jilinwu...地址,这时发现接口访问失败。

然后我们访问http://localhost:8082/springb...地址,发现服务又可正常访问了。

获取配置文件中参数

在实际的项目开发中,我们通常会遇到,读取配置文件中的参数,那么在SpringBoot中怎么获取配置文件中的参数呢?下面我们在配置文件中添加如下参数。

server:
 port: 8082
 context-path: /springboot
email:
 username: jilinwula
 password: 123456

下面我们在Controller中采用如下的方式读取配置文件中的参数。

@RestController
@RequestMapping("/jilinwula")
public class JilinwulaController {

  @Value("${email.username}")
  private String username;

  @Value("${email.password}")
  private String password;

  @RequestMapping("/helloworld")
  public Object helloWorld() {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("username", username);
    map.put("password", password);
    return map;
  }

}

我们可以直接使用@Value注解来获取配置文件中的参数,并且这个注解不只是在SpringBoot中可以使用,这个注解在Spring的项目中也可以使用。下面我们启动项目,并访问http://localhost:8082/springb...地址,看看是不是可以成功的获取配置文件中的参数。

我们看上图所示,我们成功的获取到了配置文件中的参数。但如果有强迫证的人,对于上面的代码难免有些不满意。因为如果我们要获取配置文件中非常多的参数时,要是按照上面的代码编写,则需要在代码中编写大量的@Value注解,这显然是不合理的。那有没有比较方便的办法呢?答案一定是有的,并且SpringBoot为我们提供了非常方便的方法获取配置文件中的参数。下面我们看一下这种方式。

我们首先要在项目的pom.xml中添加以下依赖:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.4</version>
      <scope>provided</scope>
    </dependency>

第一个依赖是自动获取配置文件参数的必须依赖,而下面的依赖,则是可以用注解的方式动态生成get和set方法,这样我们在开发时,就不用在写get和set方法了,在实际的项目中比较常用。在使用lombok生成get和set方法时,还要在IDEA中添加相应的lombok插件,否则IDEA会提示到不到get和set方法的警告。

其次我们新创建一下获取配置参数的类,并且添加@ConfigurationProperties注解,该注解会自动将配置文件中的参数注入到类中的属性中(不需要写@Value注解)。并且可以指定prefix参数来指定要获取配置文件中的前缀。具体代码如下:

package com.jilinwula.springboot.helloworld;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

@Component
@ConfigurationProperties(prefix = "email")
@Data
public class EmailProperties {
  private String username;
  private String password;
}

上面中的@Data,注解就是动态生成get和set方法的所以上述的代码是不需要写get和set方法的。下面我们看一下Controller中的代码修改:

package com.jilinwula.springboot.helloworld;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/jilinwula")
public class JilinwulaController {

  @Autowired
  private EmailProperties emailProperties;

  @RequestMapping("/helloworld")
  public Object helloWorld() {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("username", emailProperties.getUsername());
    map.put("password", emailProperties.getPassword());
    return map;
  }
}

下面我们启动项目并访问接口看看是否能够成功获取配置文件中的参数。

下面我们介绍一下在SpringBoot中怎么处理不同环境中获取不同的配置参数。下面我们模拟两人环境一个是开发环境,一个是测试环境,我们暂时以不同端口来区分这两个环境的区别。

application-dev.yml:

server:
 port: 8081
 context-path: /springboot
email:
 username: jilinwula
 password: 123456

application-test.yml:

server:
 port: 8082
 context-path: /springboot
email:
 username: jilinwula
 password: 654321

application.yml:

spring:
 profiles:
  active: dev

这样当我们在application.yml文件中的参数设置为dev时,SpringBoot项目在启动时就会读取application-dev.yml中的参数。如果我们将参数设置为test时,则SpringBoot会读取application-test.yml文件中的参数。

下面我们分别启动项目并且访问接口:

当参数为dev:

当参数为test:

启动时指定参数

在上一篇中我们已经介绍过了我们可以使用java -jar 项目的名字的方式启动SpringBoot项目。并且,该方式还支持指定SpringBoot参数,例如上面刚刚介绍的指定获取同环境的配置参数。具体命里如下:

java -jar jilinwula-springboot-helloworld-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

我们此时继续访问接口发现还是成功的获取了dev环境中的参数。

上述内容就是SpringBoot个性化配置的内容,如有不正确,或者需要交流的,欢迎留言,谢谢。

项目源码:

https://github.com/jilinwula/jilinwula-springboot-helloworld2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java中进程与线程_三种实现方式总结(必看篇)

    java中进程与线程_三种实现方式总结(必看篇)

    下面小编就为大家带来一篇java中进程与线程_三种实现方式总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • SpringBoot实现数据预热的方式小结

    SpringBoot实现数据预热的方式小结

    这里用到的数据预热,就是在项目启动时将一些数据量较大的数据加载到缓存中(笔者这里用的Redis),那么在项目启动有哪些方式可以实现数据预热呢,本文就来给大家讲讲几种实现数据预热的方式,需要的朋友可以参考下
    2023-09-09
  • 基于IDEA查看maven依赖结构流程解析

    基于IDEA查看maven依赖结构流程解析

    这篇文章主要介绍了基于IDEA查看maven依赖结构流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Spring集成MongoDB的两种方法实例

    Spring集成MongoDB的两种方法实例

    最近使用到了Spring框架,考虑到数据的格式并非有固定的字段格式,因此考虑到使用MongoDB非关系型数据库存储数据,所以这篇文章主要给大家介绍了Spring集成MongoDB的两种方法,需要的朋友可以参考下
    2021-09-09
  • Spring Cloud搭建eureka过程图解

    Spring Cloud搭建eureka过程图解

    这篇文章主要介绍了Spring Cloud搭建eureka过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java中生产者消费者问题总结

    Java中生产者消费者问题总结

    这篇文章主要介绍了Java中生产者消费者问题总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java8新特性之再见Permgen_动力节点Java学院整理

    Java8新特性之再见Permgen_动力节点Java学院整理

    这篇文章主要介绍了Java8新特性之再见Permgen的相关知识,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-06-06
  • springBoot中的CORS跨域注解@CrossOrigin详解

    springBoot中的CORS跨域注解@CrossOrigin详解

    这篇文章主要介绍了springBoot中的CORS跨域注解@CrossOrigin详解,通常,服务于 JS 的主机(例如 example.com)与服务于数据的主机(例如 api.example.com)是不同的,在这种情况下,CORS 可以实现跨域通信,需要的朋友可以参考下
    2023-12-12
  • Java基础类库之StringBuffer类用法详解

    Java基础类库之StringBuffer类用法详解

    String类是在所有开发项目开发之中一定会使用的一个功能类。虽然String类很好用,但也有弊端——内容不允许频繁修改,所以为了解决问题,我们提供了StringBuffer类。本文就来讲讲StringBuffer类的用法
    2022-07-07
  • java操作gaussDB数据库的实现示例

    java操作gaussDB数据库的实现示例

    本文主要介绍了java操作gaussDB数据库的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论