인프런/스프링 부트 - 핵심 원리와 활용8 8) 외부설정과 프로필 [2] 외부 설정 - 커맨드 라인 옵션 인수일반적인 커맨드 라인 인수 커맨드 라인에 전달하는 값은 형식이 없고, 단순히 띄어쓰기로 구분한다 커맨드 라인 옵션 인수(command line option arguments) 커맨드 라인 인수를 key=value 형식으로 구분하는 방법이 필요하다.그래서 스프링에서는 커맨드 라인 인수를 key=value 형식으로 편리하게 사용할 수 있도록스프링 만의 표준 방식을 정의했는데, 그것이 바로 커맨드 라인 옵션 인수이다 스프링은 커맨드 라인에 - (dash) 2개( -- )를 연결해서 시작하면 key=value 형식으로 정하고이것을 커맨드 라인 옵션 인수라 한다. --key=value 형식으로 사용한다.--username=userA --username=userB 하나의 키에.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 12. 7) 외부설정과 프로필 외부 설정이란? 하나의 애플리케이션을 여러 다른 환경에서 사용해야 할 때가 있다. 대표적으로 개발이 잘 진행되고 있는지 내부에서 확인하는 용도의 개발 환경,그리고 실제 고객에게 서비스하는 운영 환경이 있다 개발 환경: 개발 서버, 개발 DB 사용 운영 환경: 운영 서버, 운영 DB 사용 문제는 각각의 환경에 따라서 서로 다른 설정값이 존재한다는 점이다. 예를 들어서 애플리케이션이 개발DB에 접근하려 면 dev.db.com 이라는 url 정보가 필요한데, 운영DB에 접근하려면 prod.db.com 이라는 서로 다른 url을 사용해 야 한다. 이 문제를 해결하는 가장 단순한 방법은 다음과 같이 각각의 환경에 맞게 애플리케이션을 빌드하는 것이다. 개발 환경에는 dev.db.com 이 필요하므로 이 .. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 11. 6) 자동 구성(Auto Configuration) 자동 구성(Auto Configuration) 예제 만들기 스프링 부트가 제공하는 자동 구성(Auto Configuration)을 이해하기 위해 간단한 예제를 만들어보자.JdbcTemplate을 사용해서 회원 데이터를 DB에 저장하고 조회하는 간단한 기능이다 Member@Datapublic class Member { private String memberId; private String name; public Member() { } public Member(String memberId, String name) { this.memberId = memberId; this.name = name; }} memberId , name 필드가 있는 .. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 8. 5) 스프링 부트 스타터와 라이브러리 관리 라이브러리 관리의 어려움 프로젝트를 처음 시작하면 어떤 라이브러리들을 사용할지 고민하고 선택해야 한다. 예를 들어서 스프링 WEB, 내장 톰캣, JSON 처리기, 로거 등등 수 많은 라이브러리를 선택해야 한다.여기에 추가로 각 라이브러리의 버전까지 고민해야 한다. 더 심각한 문제는 각 라이브러리들끼리 호환이 잘 되는 버전도 있지만 잘 안되는 버전들도 있다. 과거에는 이런 문제들 때문에 처음 프로젝트를 세팅하는데 상당히 많은 시간을 소비했다. 스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공한다. - 외부 라이브러리 버전 관리 - 스프링 부트 스타터 제공 라이브러리 직접 관리 스프링 부트가 제공하는 편리한 라이브러리 관리 기능을 사용해보기 전에,잠깐 과거로 .. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 7. 4) 스프링 부트와 내장 톰캣 (2) 편리한 부트 클래스 만들기 지금까지 진행한 내장 톰캣 실행, 스프링 컨테이너 생성, 디스패처 서블릿 등록의 모든 과정을 편리하게 처리해주는나만의 부트 클래스를 만들어보자.부트는 이름 그대로 시작을 편하게 처리해주는 것을 뜻한다.MySpringApplicationpublic class MySpringApplication { public static void run(Class configClass, String[] args){ System.out.println("MySpringApplication.run args = " + List.of(args)); // 톰캣 설정 Tomcat tomcat = new Tomcat(); Connector connect.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 5. 3) 스프링 부트와 내장 톰캣 (1) 스프링 부트와 내장 톰캣 WAR 배포 방식의 단점 웹 애플리케이션을 개발하고 배포하려면 다음과 같은 과정을 거쳐야 한다. - 톰캣 같은 웹 애플리케이션 서버(WAS)를 별도로 설치해야 한다. - 애플리케이션 코드를 WAR로 빌드해야 한다. - 빌드한 WAR 파일을 WAS에 배포해야 한다. 웹 애플리케이션을 구동하고 싶으면 웹 애플리케이션 서버를 별도로 설치해야 하는 구조이다. 과거에는 이렇게 웹 애플리케이션 서버와 웹 애플리케이션 빌드 파일(WAR)이 분리되어 있는것이 당연한 구조였다. 그런데 이런 방식은 다음과 같은 단점이 있다. 단점 톰캣 같은 WAS를 별도로 설치해야 한다. 개발 환경 설정이 복잡하다. - 단순한 자바라면 별도의 설정을 고민하지 않고, main() 메서드만 실행하.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 11. 4. 2) 웹 서버와 서블릿 컨테이너 웹 서버와 서블릿 컨테이너 서블릿 컨테이너 초기화1 WAS를 실행하는 시점에 필요한 초기화 작업들이 있다. 서비스에 필요한 필터와 서블릿을 등록하고, 여기에 스프링을 사용한다면 스프링 컨테이너를 만들고,서블릿과 스프링을 연결하는 디스페처 서블릿도 등록해야 한다. WAS가 제공하는 초기화 기능을 사용하면, WAS 실행 시점에 이러한 초기화 과정을 진행할 수 있다. 과거에는 web.xml 을 사용해서 초기화했지만, 지금은 서블릿 스펙에서 자바 코드를 사용한 초기화도 지원한다. 디스패처 서블릿은 스프링 MVC의 핵심 요소로,클라이언트의 모든 요청을 받아서 적절한 컨트롤러로 위임하는 프론트 컨트롤러(Front Controller) 역할 import org.springframework.stereot.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 10. 31. 1) 스프링부트 소개, 톰캣 설정 스프링 부트 부트? -> BOOT, 부팅 • 최소한의 인간 개입으로 시작하고 완전히 작동하는 것을 의미• 어떤 일을 시작하기 위해 필요한 모든 준비를 마친다는 의미 • 시작을 위한 복잡한 설정 과정은 스프링 부트가 해결 • 개발자는 새로운 스프링 애플리케이션을 쉽고 빠르게 시작 • 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 • 관례에 의한 간결한 설정 핵심 기능 5가지 • WAS: Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 • 라이브러리 관리 손쉬운 빌드 구성을 위한 스타터 종속성 제공스프링과 외부 라이브러리의 버전을 자동으로 관리 • 자동 구성: 프로젝트 시작에 필요한 스프링과.. 인프런/스프링 부트 - 핵심 원리와 활용 2024. 10. 31. 이전 1 다음