spring boot: 104개의 글
이번 글에서는 Spring boot에서 RabbitMQ를 사용하는 기본적인 방법에 대해 알아보겠습니다. 0. RabbitMQ 설치하기 먼저 아래 링크를 참고해 각자의 서버에 RabbitMQ 서버와 RabbitMQ-Management를 설치합니다. 저는 AWS EC2 서버에 Docker를 사용해 RabbitMQ를 설치했습니다. ✔ EC2에 Docker 설치법 https://hackernoon.com/running-docker-on-aws-ec2-83a14b780c56 ✔ RabbitMQ Docker 설치법 https://psychoria.tistory.com/541 RabbitMQ Instance 작명규칙은 아래와 같습니다. ✔ Naming Rule • lowercase • Exchange : "x.[na..
[Spring Boot/Spring Web MVC] ViewController를 이용해서 뷰 매핑하기 @GetMapping("/hello") public String hello() { return "hello"; } 위와 같이 특정 요청 url에 대해 컨트롤러 로직 없이 바로 뷰를 리턴하는 경우 ViewController를 사용해서 뷰를 매핑할 수 있다. @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/hello").setViewName("hell..
스프링 부트 테스트 - 내장 서버 랜덤 포트로 띄우기 👉 Dependency spring-boot 2.2.5.RELEASE junit 4.12 @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class WebtoonApiControllerTest { @LocalServerPort private int port; @Test public void printPort() throws Exception { System.out.println(port); assertNotEquals(port, 0); } @Autowired private TestRestTemplate..
스프링 부트의 의존성 관리(Dependency Management) 기본적인 스프링 부트 프로젝트의 pom.xml 파일을 보면 의존성 설정이 spring-boot-starter-web과 spring-boot-starter-test 두 개 뿐이고 버전 또한 명시하지 않고 있지만 수 많은 라이브러리들을 알아서 가져온다. org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine 이것이 가능한 이유는 스프링 부트가 제공하는 의존성 관리 기능 때문이다. 기본 스프링 부트 프로젝트는 spring-boot-starter-..
스프링 부트 프로젝트 만들기 - Spring Initializr 웹 도구 사용 스프링 프로젝트를 만드는 방법 중에는 Spring에서 제공하는 Spring Initializr 웹 도구를 사용하는 간편한 방법이 있다. https://start.spring.io/ 에 접속하자. 위 주소로 들어가면 이런 화면이 보일것이다. 시간이 흐름에 따라 UI는 바뀔 수 있다. 선택해야하는 옵션은 차례로, Project: 사용할 빌드 툴 선택 (Maven/Gradle) Maven, Gradle은 프로젝트에 필요한 의존성을 관리하고 빌드 라이프사이클을 관리해주는 툴이다. 과거에는 Maven을, 최근에는 Gradle을 사용하는 추세이다. 스프링 라이브러리 관리 자체도 최근에는 Gradle로 하고 있다. Language: 언어 ..
[Spring] 데이터 바인딩 - PropertyEditor, Converter 그리고 Formatter 1. Data Binding(데이터 바인딩)의 정의 📝 데이터 바인딩 웹에서 사용자가 입력하여 전달되는 값은 주로 문자열이며, 웹 어플리케이션에서는 이 문자열을 도메인 객체의 프로퍼티 타입(int, date, boolean, ... 또는 도메인 객체 타입 그 자체)으로 변환이 필요하다. 이렇게 사용자가 입력한 문자열 값을 프로퍼티 타입에 맞춰 변환하여 할당하는 것을 데이터 바인딩이라 한다. 2. Spring의 데이터 바인딩 Spring은 데이터 바인딩 기능을 여러 인터페이스로 추상화하여 제공한다. 데이터 바인딩 인터페이스는 주로 웹 MVC에서 사용하지만 web에 국한되어 특화된 기능이 아니라 여러 곳..
오늘 다루어볼 포스팅 내용은 Maven Multi Module을 이용한 Spring Boot Project 만들기입니다. 우선 Maven Multi Module 프로젝트란 하나의 부모 Maven Project를 생성하고 그 밑으로 자식 Maven Module들을 가지는 구조입니다. 부모의 pom.xml에 공통적인 의존 라이브러리를 넣어주면 다른 자식 Maven Module에서는 그대로 사용이 가능합니다. 또한 JPA관련된 모든 소스코드를 common이라는 Maven Module로 만들어서 다른 Maven Module에서 사용하여 공통적인 중복코드를 줄일 수도 있습니다. 바로 예제로 들어가겠습니다. Maven Multi Project 모든 예제는 Eclipse + Mac OS 기반으로 작성되었습니다. 오늘..
Spring Cloud - Eureka를 이용한 마이크로서비스 동적등록&탐색&부하분산처리 우리는 이전 포스팅들에서 Spring Cloud를 다루어보면서 동적인 서비스 등록과 서버사이드 로드밸런싱에 중대한 역할을 하게 되는 Eureka에 대해 다루어 봤었다. 이러한 유레카를 이용하여 우리는 애플리케이션의 무중단 배포도 가능하다. 새로운 애플리케이션을 올리고 이전 버전의 애플리케이션을 죽이는 단순한 과정에서 우리는 중요한 개념을 생각해야 한다. 만약 이전 버전의 애플리케이션이 사용자의 요청을 받아 처리 중이라면? 그냥 애플리케이션을 죽이면 처리중인 요청을 끝까지 처리하지 못하고 데이터 유실이 발생할 것이다. 이럴때 우리는 우아하게 종료할 수 있는 방안이 필요하다. 예를 들면, Apache에서도 프로세스를 재..
오류명 : No message available 오류원인 : 1. Lombok Requires Annotation Processing 오류 2. MainApplication이랑 다른 패키지에 있을 경우 오류해결 : 1. Lombok Requires Annotation Processing 문제 해결 2. MainApplication이랑 같은 패키지에 넣어 놓아서 해결 1. Lombok Requires Annotation Processing 오류 인텔리제이로 프로젝트 실행시 아래 오류와 함께 프로젝트 실행이 안되었다. 확인해보니 Lombok Requires Annotation Processing 오류로 확인되었다. 다음과 같이 Enable 버튼을 클릭하여 해결하거나 아래와 같이 설정하여 해결하도록하자. 1-..
오류제목 : java.lang.NullPointerException(lombok 체크) 오류내용 : 회사에서 잘되던 코드가 집에서 실해하니 Null 오류를 뿜어냈다. 오류원인 : lombok 미추가로 인한 getter, setter 기능 미실행으로 발생한 오류였다. 오류해결 : lombok 추가와 Job에서 final 선언 추가 후 해결하였다. 잘되던 코드가 안된다면 lombok을 체크해보자. 회사에서 잘되던 코드가 집에서는 실행하니 NullPointer 오류를 발생했다. database.properties라고 생각하여 database.properties 변경을 하였으나 동일한 문제가 발생하였다. 원인은 lombok미설치로인한 getter, setter 실패 그러므로 잘되던 코드가 안된다면 getter,..