Back-end/Spring 8

[Springboot] 설정값을 주입 받는 방법 3가지 @Value, @ConfigurationProperties(@ConfigurationPerpertiesScan), @ConstructorBinding

사용한 기술 및 버전 스프링 부트 : 3.3.1자바 : 17IDE : IntelliJ Community 목차1. 첫 번째 방법 - @Value   1-1) @Value란?   1-2) 실습하기2. 두 번째 방법 - @ConfigurationProperties (@ConfigurationPerpertiesScan)   2-1)  @ConfigurationProperties (@ConfigurationPerpertiesScan) 란?   2-2)  실습하기3. 세 번째 방법 - @ConfigurationProperties(또는 @ConfigurationPropertiesScan) + @ConstructorBinding  →  권장⭐   3-1) @ConstructorBinding란?   3-2) 실습하기4...

Back-end/Spring 2024.10.09

[Springboot] 스프링 부트 자동구성의 동작 원리 파헤쳐보기 (@SpringBootApplication, @EnableAutoConfiguratioin, @Import, AutoConfigurationImportSelector)

어째서 스프링부트는 우리가 원하는 많은 Bean 들을 자동으로 등록해주는 것일까?  스프링부트가 해주었던 마법같은 동작을 하나하나 들여다보자. 사용한 기술 및 버전 스프링 부트 : 3.3.1자바 : 17IDE : IntelliJ Community @SpringBootApplication 을 따라 들어가 보기인텔리제이 프로젝트의 main 메서드가 있는 실행파일을 먼저 들어가보자.  순서대로 다음 어노테이션들을 @SpringBootApplication ⇒ @EnableAutoConfiguratioin ⇒ @Import({AutoConfigurationImportSelector.class}) 로 따라들어가보자.    @EnableAutoConfiguratioin 파일에 보면, @Import 어노테이션이 보인다..

Back-end/Spring 2024.09.28

[Springboot] 카멜케이스로 코드를 작성했는데 스네이크케이스로 요청이 온다면? (@JsonProperty, @JsonNaming)

카멜케이스로 코드를 작성했는데 스네이크케이스로 요청이 온다면 어떻게 할까?   Jackson 라이브러리에서 제공하는 ObjectMapper 객체는 어노테이션으로 @JsonProperty와 @JsonNaming 을 제공해준다.Snake Case 데이터를 받아, Camel Case 변수에 데이터를 바인딩 해준다.  스네이크케이스 말고도, 케밥케이스 등 많은 데이터와 매핑하는 기능을 제공한다.  예제로 실습을 해보자. 컨트롤러 @PostMapping("/test/test") public TestDto testTest(@RequestBody TestDto testDto) { return testDto; } 포스트맨 요청스네이크 케이스로 데이터를 post한다.post) http://localhost..

Back-end/Spring 2024.07.12

[Springboot] RestTemplate을 사용한 MSA 프로젝트 만들기 (서버간 통신, JPA, H2 DB, Scheduler, FileIO)

오늘은 RestTemplate을 사용하여 요즘 매우 핫하고 확장성이 뛰어난 MSA(Microservice Architecture) 프로젝트를 만들어 보았습니다.   WAS 2개를 사용하여 서버간 통신으로 데이터를 API로 전송하는 서비스를 구현하며 정리했습니다. (실제로 요구사항이 들어왔을 때를 가정하고 프로젝트를 만들어 보았습니다. )  📝 목차 1. 데이터를 전송하는 localhost:8081 서버와 API 만들기2. 데이터를 받는 localhost:8080 서버와 API 만들기3. 테스트  👇 RestTemplate 과 동기식 요청이란 더보기🙋‍♀️ RestTemplate 이란?HTTP 통신을 위한 도구로 RESTful API 웹 서비스와의 상호작용을 쉽게 외부 도메인에서 데이터를 가져오거나 ..

Back-end/Spring 2024.07.06

[JAVA/Springboot] open API 사용법(공공데이터)

1. OPEN API 신청 사용하고 싶은 오픈 API를 골라서 활용신청을 해준다. 나는 아래 사이트에서 영양정보를 제공하는 공공API를 사용하였다. https://www.data.go.kr/iim/api 활용신청 클릭 활용내용은 대충 '웹사이트 개발용' 이라고 적었다. 그러면 기다릴 필요도 없이 자동 승인이 되고, 인증키를 사용할 수 있게 된다. 참고문서의 .doc 파일을 보니 아주 자세히 요청을 어떻게 하는지 나와있다. 이렇게 해도 되지만, URL마지막 부분을 type=json으로 해주면 JSON으로 반환되어 편리하다. 아래처럼 호출해주었다. http://apis.data.go.kr/1470000/FoodNtrIrdntInfoService/getFoodNtrItdntList?ServiceKey=서비스키..

Back-end/Spring 2024.04.03

[Spring] 스프링을 구동하면 일어나는 일 / 생성자 주입을 사용해야 하는 이유 (스프링 빈 라이프사이클)

스프링을 구동 (run) 하면 일어나는 일들을 알아보며 생성자 주입과 필드 주입의 차이를 알아보자. 스프링을 구동하면 스프링은 스프링 빈 라이프사이클을 거치며, 7단계의 순서로 진행이 된다. 스프링 컨테이너 생성 → 빈 생성 → 의존성 주입 → 초기화 콜백 메서드 호출 → 사용 → 소멸 전 콜백 메서드 호출 → 스프링 종료 자세히 알아보자. 1. 스프링 컨테이너 생성 스프링을 구동하면 , 먼저 스프링 컨테이너가 생성이 된다. 컴포넌트스캔이나 @Bean 으로 등록된 클래스 등 빈으로 설정한 아이들을 스프링 컨테이너 생성과 함께 모두 빈으로 등록한다. 2. 빈 생성 스프링 컨테이너는 등록된 빈의 클래스를 기반으로 실제 빈 객체를 생성한다. 스프링을 실행(run) 하자마자 빈 등록과 빈 생성이 바로 이루어진다..

Back-end/Spring 2023.11.17

[spring] 스프링 웹 개발 기초

스프링 웹 개발에는 크게 3가지가 있다. 1. 정적컨텐츠 2. MVC와 템플릿엔진 3. API 1. 정적컨텐츠 - 서버에서 html파일을 그.대.로. 웹브라우저에 내려주는것이다. - 웹에서 로컬호스트 주소를 치면 -> 내장 톰캣서버가 먼저 요청을 받고 스프링에게 던짐 -> 스프링컨테이너 안에서 hello-static관련컨트롤러를 찾고 없으니까 -> resources안의 hello-static.html파일을 찾고 웹에 반환해준다!! 2. MVC와 템플릿엔진 - 서버에서 html파일을 변.형.해.서. 웹브라우저에 내려주는것이다. - 웹에서 로컬호스트 주소를 치면 -> 내장 톰캣서버가 먼저 요청을 받고 스프링에게 던짐-> 스프링컨테이너 안에서 관련컨트롤러를 찾았어! HelloController의 메서드에 매핑..

Back-end/Spring 2022.09.16