[Java] ProcessBuilder

2024. 4. 2. 18:02·Java/Spring

회사에서 Selenium Web UI Test를 담당하면서 테스트 격리를 위해 DB를 기존 초기 세팅된 상태로 초기화해야 하는 상황이 생겼습니다. 그래서 처음에는 RDB(MariaDB)와 NoSQL(Elasticsearch)을 세팅하는 docker-compose를 재실행하면 될 거라는 막연한 생각이었지만, 이는 시간이 많이 소모되기에 cmd창에서. sql 파일을 실행하는 방향으로 갔습니다. statement를 이용하여 sql을 실행하는 것도 가능하지만, DB 연결을 맺는 코드를 따로 작성해줘야 했기에 ProcessBuilder 클래스를 활용하게 되었습니다.

 

ProcessBuilder

  • 다른 외부 프로세스를 실행하거나 컨트롤러하는 것을 지원해 주는 Java class
  • 윈도우의 cmd, 리눅스의 sh를 이용하여 외부 커맨드 파일을 실행할 수 있습니다.
  • command(List<String>), command(...String): List<String>, String 타입 매개변수로 받아 실행할 커맨드를 지정
  • directory(File Directory): 커맨드를 실행할 경로 지정
  • start(): 커맨드를 실행

그러면 외부 커맨드를 실행한 결과는 어떻게 반환할까요?

 

실행하면서 발생하는 Console 출력을 getInputStream() 메서드를 통해 BufferReader 객체로 반환합니다. 

Java에서 외부 프로세스 (윈도우, 리눅스.)를 실행할 수 있는 ProcessBuilder에 대해 알아보았습니다.   

저작자표시 비영리 변경금지 (새창열림)

'Java > Spring' 카테고리의 다른 글

[Spring] Spring Batch Architecture & Component  (0) 2024.07.05
[Spring] Ajax 통신에서 Csrf Header, Token 정보를 넘겨주는 방법  (0) 2024.05.29
[Spring] Lightsail 배포 서버에서 Spring Application 실행 시, Encoding UTF-8 인식을 하지 못하고 한글이 깨지는 현상  (1) 2023.11.25
[Spring] @PropertySource, @Value 어노테이션에 대해 알아보자  (0) 2023.11.25
[Spring] JPA Auditing 기술을 사용하여 생성일자, 수정일자 컬럼의 데이터 형식을 깔끔하게 지정하는법  (0) 2023.11.24
'Java/Spring' 카테고리의 다른 글
  • [Spring] Spring Batch Architecture & Component
  • [Spring] Ajax 통신에서 Csrf Header, Token 정보를 넘겨주는 방법
  • [Spring] Lightsail 배포 서버에서 Spring Application 실행 시, Encoding UTF-8 인식을 하지 못하고 한글이 깨지는 현상
  • [Spring] @PropertySource, @Value 어노테이션에 대해 알아보자
SeungbeomKim
SeungbeomKim
[IT(PS, CS, SW, etc.) 지식 기록] Github : https://github.com/daily1313/
  • SeungbeomKim
    개발 블로그
    SeungbeomKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (384) N
      • 일상 (33)
        • 여행 (17)
        • 회고록 (9)
        • 리뷰 (7)
      • PS (138)
        • 그리디 알고리즘[Greedy] (25)
        • 정렬 알고리즘[Sort] (18)
        • 문자열 알고리즘[String] (14)
        • 동적 계획 알고리즘[DP] (17)
        • 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS.. (34)
        • 재귀[Recursion] (2)
        • 백트래킹[Backtracking] (5)
        • 브루트포스 알고리즘[Bruteforce] (16)
        • 자료 구조[Data Structure] (4)
        • 분할 정복 알고리즘[Divide & Conquer.. (3)
      • CS (22)
      • Network (11)
      • Database (8)
        • Elasticsearch (3)
      • Linux (2)
      • JavaScript (4)
        • AngularJS (1)
      • Java (92)
        • Effective Java (5)
        • Java Concept (20)
        • Spring (61)
        • Design Pattern (3)
      • Python (2)
      • Vscode (1)
      • DevOps (43)
        • AWS (27)
        • Git (7)
        • Docker (6)
        • Nginx (1)
      • 자격증 (10)
        • SQL (4)
      • 사이드 프로젝트 (3) N
        • MatJido (3) N
      • 기타 (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 소개
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    Effective Java
    너비 우선 탐색
    메타코딩
    정보처리기사 실기
    AWS
    Spring
    컴퓨터구조
    다이나믹 프로그래밍
    일본여행
    BFS
    springboot
    Wi-Fi
    정보처리기사 필기
    docker
    백트래킹
    이펙티브 자바
    dfs
    sqld
    dp
    정보처리기사
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
SeungbeomKim
[Java] ProcessBuilder
상단으로

티스토리툴바