温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用SpringBoot怎么实现个性化配置

发布时间:2021-05-18 18:00:16 来源:亿速云 阅读:212 作者:Leah 栏目:编程语言

这期内容当中小编将会给大家带来有关使用SpringBoot怎么实现个性化配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

修改默认端口

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

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

server.port=8081

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

使用SpringBoot怎么实现个性化配置

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

使用SpringBoot怎么实现个性化配置

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

使用SpringBoot怎么实现个性化配置

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

application.yml文件

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

使用SpringBoot怎么实现个性化配置

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

使用SpringBoot怎么实现个性化配置

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

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

使用SpringBoot怎么实现个性化配置

修改默认项目名

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

server:
 port: 8082
 context-path: /springboot

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

使用SpringBoot怎么实现个性化配置

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

使用SpringBoot怎么实现个性化配置

获取配置文件中参数

在实际的项目开发中,我们通常会遇到,读取配置文件中的参数,那么在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...地址,看看是不是可以成功的获取配置文件中的参数。

使用SpringBoot怎么实现个性化配置

我们看上图所示,我们成功的获取到了配置文件中的参数。但如果有强迫证的人,对于上面的代码难免有些不满意。因为如果我们要获取配置文件中非常多的参数时,要是按照上面的代码编写,则需要在代码中编写大量的@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方法的警告。

使用SpringBoot怎么实现个性化配置

其次我们新创建一下获取配置参数的类,并且添加@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怎么实现个性化配置

下面我们介绍一下在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:

使用SpringBoot怎么实现个性化配置

当参数为test:

使用SpringBoot怎么实现个性化配置

启动时指定参数

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

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

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

使用SpringBoot怎么实现个性化配置

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

上述就是小编为大家分享的使用SpringBoot怎么实现个性化配置了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI