SPRING/Spring Boot 21

[SpringBoot] 설정파일(application.properties)

지난 포스팅에서 Application이 외부설정을 가져오는 3가지 방법을 알아보았다. Application은 OS의 환경변수, JVM의 VM옵션 그리고 CommandLine에서 외부의 설정을 넘겨받을 수 있다. 외부 설정의 개수가 적으면 3가지 방식이 유용하지만 설정의 개수가 많으면 외부에 파일을 하나 두고 관리하는 것이 좋다. 1) 외부설정파일 Application 내부가 아닌 외부에 파일을 생성해보자. (MacOS 기준 설명입니다.) application.properties url=dev.db.com name=dev_user key=value 형식을 지켜서 작성한다. SpringBoot 프로젝트는 실행가능한 jar로 압축되는데, 해당 jar와 동일한 위치에 외부설정파일을 위치시킨다. jar를 실행하면..

SPRING/Spring Boot 2023.05.05

[SpringBoot] 외부설정 가져오기(1) - Enviroment

Application은 외부에서 설정을 가져올 수 있다. 외부설정을 가져 오는 방법은 다양한데, SpringBoot는 최대한 통합하고 추상화하여, 외부설정을 간단히 조작할 수 있도록 기능을 제공한다. 그럼 SpringBoot가 어떻게 외부설정을 조작하는지 알아보자. Application은 다양한 환경에서 설정을 가져온다. OS의 환경변수, JVM의 VM옵션 그리고 App 시작 시, 수행되는 커맨드라인에도 설정을 넣을 수 있다. 환경이 다양한 만큼, 설정을 가져오는 방법도 각각 다르다. OS 환경변수는 System.getenv()에서 가져온다. JVM의 VM옵션은 System.getProperties()에서 가져온다. 커맨드라인은 main 메소드의 String[] args에서 가져온다. 환경에 따라, 설정..

SPRING/Spring Boot 2023.05.05

[SpringBoot] SpringBoot 자동구성 원리

[SpringBoot] 자동구성 라이브러리 만들기 한 SpringBoot 프로젝트에서 추가기능이 필요하여 라이브러리를 하나 만들었다고 가정하자. 라이브러리는 클래스파일 모음으로 POJO이다. IOC컨테이너에 POJO를 Bean으로 등록하려면 설정파일을 읽어 lordofkangs.tistory.com 지난 포스팅에서 자동구성 라이브러리를 만들어 보았다. 자동구성 라이브러리란, 프로젝트가 외부라이브러리를 사용할 때 Spring이 자동으로 필요한 Bean을 등록하도록 구성된 라이브러리이다. Bean은 POJO에서 Spring이 설정파일을 읽어 등록한다. 설정파일을 자동구성으로 만들면 외부라이브러리를 추가만해도 자동으로 Bean이 IOC컨테이너에 등록된다. SpringBoot 프로젝트를 생성할 때 Dependc..

SPRING/Spring Boot 2023.05.04

[SpringBoot] 자동구성 라이브러리 만들기

한 SpringBoot 프로젝트에서 추가기능이 필요하여 라이브러리를 하나 만들었다고 가정하자. 라이브러리는 클래스파일 모음으로 POJO이다. IOC컨테이너에 POJO를 Bean으로 등록하려면 설정파일을 읽어야 한다. 하지만 문제가 하나 있다. 설정파일은 @Configuration 어노테이션으로 선언된 Java클래스이다. SpringBoot는 컴포넌트 스캔으로 @Configuraion으로 선언된 클래스를 스캔하여 Bean을 등록한다. 그러므로 라이브러리를 추가하려면 개발자는 설정클래스를 SpringBoot가 스캔할 수 있도록 디렉토리에 구현해야 한다. 그렇게 되면 개발자는 어떤 객체를 Bean으로 등록해야 하는지 어떻게 설정 파일을 구성해야 하는지 가이드를 보며 공부해야만 한다. 이런 별도의 구현없이 라이..

SPRING/Spring Boot 2023.04.29

[SpringBoot] @Conditional 이란?

@Conditional 어노테이션이란? 컴포넌트의 Bean 등록여부에 조건을 달 수 있게하는 어노테이션이다. 스프링은 IOC컨테이너에 객체를 Bean으로 등록하여 사용한다. @Component로 선언된 클래스는 모두 Bean으로 등록되는데 여기에 조건부를 달 수가 있다. 즉, A경우에 등록을 하되, B경우에는 등록하지 않도록 설정할 수 있다. 예를 들어보자. Spring기반의 웹사이트가 있다. 여기에 추가 기능을 넣으려고 한다. Spring은 추가기능의 설정파일을 읽고 POJO에서 Bean을 IOC컨테이너에 등록한다. 이때 설정파일을 조건부로 읽는다면 필요할 때만 IOC컨테이너에 Bean을 등록할 수 있다. 여기서 @Conditional 어노테이션을 사용한다. 구현 웹사이트 실행시 옵션으로 -Dmemor..

SPRING/Spring Boot 2023.04.29

[SpringBoot] 실행가능한 JAR

SpringBoot는 웹어플리케이션을 마치, JAVA 프로그램처럼 구동한다. 이전에는 방식이 달랐다. 개발자가 코드를 짜면 외장 웹서버 환경에서 동작 가능하도록 WAR형식으로 압축한 뒤, 웹서버에 배포해야만 했다. SpringBoot는 내장웹서버를 사용한다. 그래서 웹어플리케이션이 JAVA프로그램 같이 구동된다. 실행가능한 JAR JAR 파일은 여러 JAVA클래스 파일이 배포가능하도록 하나로 묶은 파일이다. JAR가 Main클래스가 있어서 실제 프로그램으로 실행가능하다면 이를, 실행가능한 JAR 라 부른다. package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.au..

SPRING/Spring Boot 2023.04.27

[SpringBoot] SpringBoot 웹환경 구성 원리

지난 포스팅에서는 Spring Boot 클래스를 직접 만들어보았다. [SpringBoot] 내장톰캣에서 Spring Boot클래스 만들기 [SpringBoot] Main클래스에서 내장톰캣 실행시키기 [SpringBoot] 외장톰캣에서 SpringMVC 구현하기 [SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장 lordofkangs.tistory.com MySpringBootMain 클래스는 Main클래스로 MySpringApplication 클래스를 호출하여 실행한다. MySpringApplication 클래스는 스프링컨테이너, DispatcherServlet, 내장톰캣을 생성 및 설정을 담당하는 클..

SPRING/Spring Boot 2023.04.27

[SpringBoot] 내장톰캣에서 Spring Boot클래스 만들기

[SpringBoot] Main클래스에서 내장톰캣 실행시키기 [SpringBoot] 외장톰캣에서 SpringMVC 구현하기 [SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장톰캣을 사용하면서 간편해진 점을 알아보기 위 lordofkangs.tistory.com 지난 포스팅에서는 내장톰캣을 활용하여 서블릿 하나를 띄어보았다. 이번에는 SpringMVC가 적용된 Spring Boot클래스를 만들어보겠다. 1. 어노테이션 만들기 import org.springframework.context.annotation.ComponentScan; import java.lang.annotation.*; @Target(E..

SPRING/Spring Boot 2023.04.02

[SpringBoot] Main클래스에서 내장톰캣 실행시키기

[SpringBoot] 외장톰캣에서 SpringMVC 구현하기[SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장톰캣을 사용하면서 간편해진 점을 알아보기 위해 우선, SpringBoot 이전에 사용했던 외장톰lordofkangs.tistory.com 지난 포스팅에는 외장톰캣을 활용한 SpringMVC를 구현해보았다. 개발자가 작성한 코드가 WAR로 압축되고 톰캣WAS로 배포된 뒤, WAS서버가 실행되어야 했다. 서버의 실행주체는 외장톰캣이다. 발상을 바꾸어, 어차피 톰캣도 JAVA언어로 구현되어있는데 톰캣을 라이브러리로 만들고 개발자가 톰캣설정 및 실행을 하는 코드를 구현하여 main 메소드로 실행시키면..

SPRING/Spring Boot 2023.04.02

[SpringBoot] 외장톰캣에서 SpringMVC 구현하기

[SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장톰캣을 사용하면서 간편해진 점을 알아보기 위해 우선, SpringBoot 이전에 사용했던 외장톰캣 방식에 대해서 알아보겠다. 외장톰캣 방식이란? 개발 lordofkangs.tistory.com 지난 포스팅에서 IntelliJ에서 외장톰캣을 띄어 보았다. 이제 해당 환경에서 SpringMVC를 구현해보겠다. SprinMVC 구현 톰캣은 서블릿(Servlet)을 사용한다. 서블릿의 정의는 아래 포스팅을 참고바란다. [ JSP ] Servlet 이란? Servlet이란 Server Application Let의 줄임말이다. Let은 조각을 의미하니 서버의 조..

SPRING/Spring Boot 2023.04.02