[IntelliJ] How - Spring 서버 2개 실행하는 방법

하쮸·2026년 2월 14일

Error, Why, What, How

목록 보기
65/68

1. Edit Configurations


  • Allow multiple instances 선택.

2. applicaion.properties

server.port=8080
  • 8080 port, 9090 port 이렇게 2개 사용할 예정.

3. 테스트.

server.port=8080
  • 이 상태에서 서버를 실행.

  • 현재 톰캣이 8080 port를 사용.

  • 이 상태를 그대로 유지한채 applicaion.properties로 가서 server.port의 값을 수정.

server.port=9090
  • 서버를 실행.

  • 톰캣이 9090 port를 사용.

  • 인텔리제이 콘솔창도 2개 생김.
    • 좌측: 8080 port
    • 우측: 9090 port

4. 포스트맨 테스트.

↓ config

@Configuration
@EnableFeignClients(basePackages = "com.project.consumingrestendpoints.proxy")
public class ProjectConfig1 {
}

↓ 9090 controller

@RestController
public class PaymentsController1 {
    private final PaymentsProxy1 paymentsProxy1;

    public PaymentsController1(PaymentsProxy1 paymentsProxy1) {
        this.paymentsProxy1 = paymentsProxy1;
    }
    @PostMapping("/payment1")
    public Payment1 createPayment(@RequestBody Payment1 payment1) {
    	System.out.println("9090 호출.");
        String requestId = UUID.randomUUID().toString();
        return paymentsProxy1.createPayment(requestId, payment1);
    }
}

↓ proxy

@FeignClient(name = "payments", url = "http://localhost:8080")
public interface PaymentsProxy1 {
    @PostMapping("/payment")
    Payment1 createPayment(@RequestHeader String requestId,
                           @RequestBody Payment1 payment1);
}

↓ 8080 controller

@RestController
public class PaymentsController {

    private static Logger logger = Logger.getLogger(PaymentsController.class.getName());

    @PostMapping("/payment")
    public ResponseEntity<Payment> createPayment(@RequestHeader String requestId,
                                                 @RequestBody Payment payment) {
        logger.info("Received request with ID " + requestId +
                         " ;Payment Amount: " + payment.getAmount());

        payment.setId(UUID.randomUUID().toString());
        System.out.println("8080 호출");

        return ResponseEntity
                .status(HttpStatus.OK)
                .header("requestId", requestId)
                .body(payment);
    }
}

profile
Every cloud has a silver lining.

0개의 댓글