Spring/Spring Boot
[Spring Boot] 외부 설정
[Spring Boot] 외부 설정
2023.05.28개발한 애플리케이션을 실행할 때는 개발 / 로컬 / 운영 환경으로 나눠서 실행하고, 환경마다 사용하는 데이터베이스나 기타 설정을 다르게 설정한다. 변하는 환경 값들을 실행하는 시점에서 외부에서 넣어 주는 방식을 사용하는 편이 합리적이다. 대부분 애플리케이션 빌드는 한 번만 하고, 애플리케이션을 실행할 때 설정 정보를 외부에서 넣어 주는 방식을 사용한다. 외부 설정으로는 크게 4가지 방법이 있다. 1. OS 환경 변수 : 운영체제에서 제공하고, 해당 운영체제를 쓰는 모든 프로세스에서 사용된다. System.getenv() 메서드로 Map을 반환받고 OS가 제공하는 환경 변수를 출력할 수 있다. 데이터베이스 접근 URL을 OS의 환경 변수에 설정해두고 애플리케이션 실행 시 읽어들이는 방식을 사용할 수 있다...
[Spring Boot] 자동 구성
[Spring Boot] 자동 구성
2023.05.26DB에 회원을 저장하고 관리하려면 JdbcTemplate, DataSource, TransactionManager 등 데이터베이스 관련 여러 빈들이 사용된다. 스프링 부트는 자동 구성 기능을 사용해 자주 사용하는 빈들을 자동으로 등록해준다. spring-boot-autoconfigure 프로젝트 내부에서 자동 구성 관련 정보를 확인할 수 있다. (spring-boot-starter 라이브러리를 추가할 때 등록된다) @AutoConfiguration(after = DataSourceAutoConfiguration.class) @ConditionalOnClass({ DataSource.class, JdbcTemplate.class }) @ConditionalOnSingleCandidate(DataSource..
[Spring Boot] 라이브러리의 선택과 버전 관리
[Spring Boot] 라이브러리의 선택과 버전 관리
2023.05.23스프링으로 애플리케이션을 만들 때 아무것도 없는 처음부터 시작하지는 않는다. 미리 작성된 라이브러리들을 불러와서 적절하게 사용하는 방식으로 애플리케이션을 작성하는데... 적절한 라이브러리를 찾았다고 해서 무조건 정상적으로 작동한다는 보장은 없다. 라이브러리를 구축할 때 서로 충돌이 발생하지 않도록 버전 관리도 해 줘야 하고, 새로운 버전이 나오면 라이브러리를 따로 업데이트 해 줘야 한다. 스프링 부트는 라이브러리의 버전을 관리해준다. 개발자는 필요한 라이브러리를 고르기만 하면 되고, 스프링 부트가 사용하는 라이브러리들의 버전을 알아서 관리한다. (최적화 된 버전을 사용한다) dependency-management 플러그인을 사용하면 spring-boot-dependencies 의 bom (bill of ..
[Spring Boot] 부트와 내장 WAS
[Spring Boot] 부트와 내장 WAS
2023.05.22웹 서버와 웹 애플리케이션 서버에 대해 제대로 알고 넘어가자. 웹 서버는 HTTP 프로토콜로 들어오는 클라이언트의 요청을 받아 처리하는 역할을 수행한다. (Apache, Nginx) 웹 애플리케이션 서버 (WAS) 도 클라이언트의 요청을 받아 동적인 컨텐츠를 제공한다. (Tomcat, Express, Django..) 웹 서버는 페이지를 렌더링 할 때 필요한 정적인 컨텐츠와 로드밸런싱, SSL 암호화 등을 빠르게 제공하고 웹 애플리케이션 서버는 동적인 컨텐츠를 제공한다. 스프링 애플리케이션은 WAS 위에서 실행되고, 웹 서버를 앞에 두고 웹 서버를 통해 클라이언트의 요청을 전달받고 요청을 처리하는 방식을 자주 사용한다. 클라이언트가 웹 서버에 HTTP 요청을 보내면 웹 서버가 정적 컨텐츠 요청인지 동적 ..
[Spring Boot] 스프링과 웹 서버
[Spring Boot] 스프링과 웹 서버
2023.05.21부트를 사용하기 전 웹 애플리케이션을 배포하려면 WAS를 따로 설치해 주고 해당 WAS에서 잘 동작하도록 서블릿 스펙에 맞춰 코드를 작성한 후 WAR로 패키징해서 WAS의 배포 디렉토리에 WAR파일을 전달해 줘야 했다. 부트는 이런 작업을 자동화한다. Tomcat (WAS) 을 기본적으로 포함하고 있어 작성한 자바 코드를 빌드한 jar파일을 실행해주기만 하면 애플리케이션이 실행된다. (jar는 메인 메서드가 있다) 자바는 여러 클래스와 리소스들을 묶어서 JAR (Java Archieve) 압축 파일을 만들 수 있다. JAR 로 패키징 된 파일은 JVM에서 직접 실행되거나 다른 애플리케이션의 라이브러리로 사용될 수 있다. (직접 실행되는 경우 메인 메서드가 있어야 하고, MANIFEST 파일에 실행할 메인..
[Spring Boot] 스프링 부트의 도입
[Spring Boot] 스프링 부트의 도입
2023.05.14스프링 부트는 스프링을 편하게 사용할 수 있도록 지원한다. 자바로 애플리케이션을 편하게 만들기 위해 스프링이 도입됐고, 스프링을 편하게 사용하기 위해 스프링 부트가 도입됐다. 스프링 부트는 스프링에서 설정해야 되는 여러 요소들을 자동화하고 Best Practice를 사용할 수 있도록 설계되어있다. 아래는 부트가 자동화하는 주요 기능이다. (많은 기능 중 주요 기능이다) 스프링 부트는 스프링 부트로, 부트가 아닌 스프링은 스프링으로 서술한다. 1. WAS 내장 스프링 부트는 Tomcat을 내장하고 있어 스프링 프로젝트를 다룰 때 처럼 Tomcat을 따로 설치할 필요가 없다. 스프링과는 다르게 메인 메서드가 있어 메인 메서드를 실행하면 내장된 WAS를 실행하게 된다. 2. 라이브러리 관리 애플리케이션 개발에..