SpringBoot如何指定某些类优先启动

 更新时间:2019年09月29日 11:41:17   作者:ping9527  
这篇文章主要介绍了SpringBoot如何指定某些类优先启动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、需求

1、项目中对某些IP地址和端口做了限制,只有写在配置文件的内容(ip)才可以访问项目。

2、在进行测试案例运行时保证读取配置文件中ip和port的类(CbeConfig)得提前运行。

二、工作

1、如下的测试时肯定不行

@Test
  public void getCbeTest(){
    CbeConfig cbeConfig = new CbeConfig();
    System.out.println("IP是" + cbeConfig.getIp());
    System.out.println("Port是" + cbeConfig.port);
  }

2、保证CbeConfig类在程序运行起来的那一刻先存在,先写一个读取配置的类,程序运行起来后读取到配置后,然后再将读取的参数设置到另一个类(CbeConfigAfter)中,以后提取参数。都使用CbeConfigAfter。

CbeConfigBefore类实现ApplicationRunner接口的run方法

package com.example.demo;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class CbeConfigBefore implements ApplicationRunner {

 @Value("${cbe.ip}")
 public String ip;


 @Value("${cbe.port}")
 public Integer port;

 @Override
 public void run(ApplicationArguments applicationArguments) throws Exception {
  System.out.println("我第一个启动");
  System.out.println("哈哈ip" + ip);
  System.out.println("哈哈port" + port);
  CbeConfigAfter cbeConfigAfter = CbeConfigAfter.getInstance();
  cbeConfigAfter.setIp(ip);
  cbeConfigAfter.setPort(port);
  System.out.println("设置完毕");
 }

 public String getIp() {
  return ip;
 }

 public void setIp(String ip) {
  this.ip = ip;
 }

 public int getPort() {
  return port;
 }

 public void setPort(int port) {
  this.port = port;
 }
}

CbeConfigAfter类写成单例模式

package com.example.demo;
import lombok.Getter;
import lombok.Setter;
public class CbeConfigAfter {

 public String getIp() {
  return ip;
 }
 public void setIp(String ip) {
  this.ip = ip;
 }
 public int getPort() {
  return port;
 }
 public void setPort(int port) {
  this.port = port;
 }
 String ip;
 int port;
 private static CbeConfigAfter cbeConfigAfter;
 private CbeConfigAfter (){}
 public static synchronized CbeConfigAfter getInstance() {
  if (cbeConfigAfter == null) {
   cbeConfigAfter = new CbeConfigAfter();
  }
  return cbeConfigAfter;
 }
}

测试类

package com.example.demo.controllerTest;

import com.example.demo.CbeConfigAfter;
import com.example.demo.CbeConfigBefore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class CbeTest {
 @Test
 public void getCbeByAfterTest(){
  CbeConfigAfter instance = CbeConfigAfter.getInstance();
  System.out.println("IP是" + instance.getIp());
  System.out.println("端口是" + instance.getPort());
 }

 @Test
 public void getCbeBeforeTest(){
  CbeConfigBefore cbeConfig = new CbeConfigBefore();
  System.out.println("IP是" + cbeConfig.getIp());
  System.out.println("Port是" + cbeConfig.port);
 }
}

此时再运行getCbeByAfterTest测试类,OK,搞定。

虽然搞定,但是我还是仍有心有疑虑,请有幸读完的同志挑挑毛病。谢谢。

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

相关文章

  • springboot整合SSE的项目实践

    springboot整合SSE的项目实践

    SSE是一种可以主动从服务端推送消息的技术,本文主要介绍了springboot整合SSE的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Jenkins发送测试报告邮件过程详解

    Jenkins发送测试报告邮件过程详解

    这篇文章主要介绍了Jenkins发送测试报告邮件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • java Map接口子类HashMap遍历与LinkedHashMap详解

    java Map接口子类HashMap遍历与LinkedHashMap详解

    这篇文章主要介绍了java Map接口子类HashMap遍历与LinkedHashMap详解,Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,感兴趣的小伙伴可以参考下面文章详细内容介绍
    2022-06-06
  • springboot结合前端实现网页跳转功能实例

    springboot结合前端实现网页跳转功能实例

    今天处理Springboot统一异常拦截的时候,遇到了页面跳转的问题,这篇文章主要给大家介绍了关于springboot结合前端实现网页跳转功能的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Eclipse的Debug调试技巧大全(总结)

    Eclipse的Debug调试技巧大全(总结)

    这篇文章主要介绍了Eclipse的Debug调试技巧大全(总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Java中将多个PDF文件合并为一个PDF的方法步骤

    Java中将多个PDF文件合并为一个PDF的方法步骤

    这篇文章主要给大家介绍了关于Java中将多个PDF文件合并为一个PDF的方法步骤, Java PDF合并是指将多个PDF文件合并成一个PDF文件的过程,需要的朋友可以参考下
    2023-09-09
  • 解析JPA的视图查询问题

    解析JPA的视图查询问题

    这篇文章主要是对JPA的视图查询问题进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • Java实现图片旋转、指定图像大小和水平翻转

    Java实现图片旋转、指定图像大小和水平翻转

    这篇文章主要为大家详细介绍了Java实现图像旋转,指定图像大小,水平翻转图像,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 详解用JWT对SpringCloud进行认证和鉴权

    详解用JWT对SpringCloud进行认证和鉴权

    这篇文章主要介绍了详解用JWT对SpringCloud进行认证和鉴权,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java基础之static的用法

    Java基础之static的用法

    这篇文章主要介绍了Java基础之static的用法,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有很大的帮助,需要的朋友可以参考下
    2021-05-05

最新评论