SpringBoot 랜 덤 포트 시작 실현
5243 단어 SpringBoot무 작위포트시동 을 걸다
1.기초 소개
포트 도구 클래스 를 만 들 고 socket 으로 지정 한 포트 를 연결 합 니 다.예 를 들 어 다음 조건 이 있 습 니 다.
a.지정 한 포트 범 위 는 8000-65535 입 니 다.
b.식별 포트 가 사용 되 었 는 지,사용 되 었 는 지 계속 무 작위 로 생 성 됩 니 다.
c.모든 포트 를 사용 할 수 없 으 면 오류 가 발생 하여 실행 을 중단 합 니 다.
import java.net.InetAddress;
import java.net.Socket;
import java.util.Random;
public class ServerPortUtil {
private static final int MAX_PORT = 65535;
private static final int MIN_PORT = 8000;
public static String getAvailablePort() {
Random random = new Random();
//
int maxRetryCount = MAX_PORT - MIN_PORT;
while (maxRetryCount > 0) {
// , ,
int port = random.nextInt(MAX_PORT - MIN_PORT) + MIN_PORT;
boolean isUsed = isLocalePortUsing(port);
if (!isUsed) {
return String.valueOf(port);
}
--maxRetryCount;
}
System.out.println(" , ");
System.exit(1);
return null;
}
/**
*
*
* @author [email protected]
* @since 2020/10/14
*/
public static boolean isLocalePortUsing(int port) {
try {
// Socket , true, false, 127.0.0.1
new Socket(InetAddress.getByName("127.0.0.1"), port);
return true;
} catch (Exception e) {
// ,
}
return false;
}
}
명령 클래스 를 만 들 고 랜 덤 포트 기능 으로 포트 정 보 를 가 져 온 다음 포트 정 보 를 실행 환경 에 기록 합 니 다.a.들 어 오 는 매개 변수 가 포트 를 포함 하면 지정 한 것 을 사용 합 니 다.그렇지 않 으 면 자동 으로 생 성 됩 니 다.
import com.codecoord.randomport.util.ServerPortUtil;
import org.springframework.util.StringUtils;
public class StartCommand {
/**
* , server.port , , ${auto.port}
*/
private static final String SERVER_PORT = "auto.port";
public StartCommand(String[] args) {
boolean isServerPort = false;
String serverPort = "";
if (args != null) {
for (String arg : args) {
if (StringUtils.hasText(arg) && arg.startsWith("--server.port" )) {
isServerPort = true;
serverPort = arg;
break;
}
}
}
String port;
if (isServerPort) {
port = serverPort.split("=")[1];
} else {
port = ServerPortUtil.getAvailablePort();
}
System.out.println("Current project port is " + port);
System.setProperty(SERVER_PORT, port);
}
}
시작 클래스 가 시작 되 기 전에 환경 에 포트 정 보 를 기록 합 니 다.
import com.codecoord.randomport.config.StartCommand;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplicatio
public class SpringbootRandomPortApplication {
public static void main(String[] args) {
//
new StartCommand(args);
SpringApplication.run(SpringbootRandomPortApplication.class, args);
}
}
설정 파일 에 포트 를 무 작위 로 생 성 된 포트 정보 로 지정 합 니 다.
server:
#
port: ${auto.port}
프로젝트 테스트 가 정상적으로 시 작 된 항목 은 콘 솔 에서 시 작 된 포트 정 보 를 볼 수 있 습 니 다.2.SpringBoot 다 중 인 스 턴 스 실행
SpringBoot 의 다 중 인 스 턴 스 는 IDEA 에서 다음 과 같이 설정 되 어 있 습 니 다.
그리고 시작 에 run/debug 를 시작 하면 됩 니 다.
SpringBoot 랜 덤 포트 가 시 작 된 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 랜 덤 포트 가 시 작 된 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.