본문 바로가기

IT/Spring21

[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (3) 1. 회원 관리 웹 애플리케이션 요구 사항 Member, MemberRespository를 생성한다. Repository의 경우 싱글톤 패턴을 위해 생성자를 Private 로 막아둔다. package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String name; private int age; public Member() { } public Member(String name, int age) { this.name = name; this.age = age; } } package hello.servlet.do.. 2024. 4. 21.
[Spring][Error] RestTemplate Response 한글 깨짐 Java Spring Boot에서 RestTemplate을 사용하여 API 호출하는 경우 한글이 깨져서 들어오는 경우가 존재한다. 이는 RestTemplate에서 사용하는 StringHttpMessageConverter의 default Characterset이 ISO 8859-1이기 때문이다. 이를 해결하기 위해서 사용하는 Charset을 UTF-8로 변경해 줄 필요가 있다. RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); RestTemplate 선언이후 restTemplate 객체에 get.. 2024. 4. 21.
[Spring][Error] java.lang.IllegalStateException: Module entity with name: ... 기존의 git repository를 다른 곳으로 복제하여 옮기면서 신규 Repo.에서 git clone으로 프로젝트를 가져오는 경우에 발생하였다. Spring boot 프로젝트를 gradle build 과정에서 아래와 같은 오류가 발생하였다. java.lang.IllegalStateException: Module entity with name: {projectName} should be available 해당 오류는 프로젝트명과 setting.gradle > rootProject.name의 값이 달라서 gradle 빌드시 오류가 발생하는 문제이다. git repository를 복제하는 과정에서 프로젝트명의 camelCase 중 소문자 입력이 되어 발생한 문제로 아래와 같은 방법으로 해결할 수 있었다. 프.. 2024. 4. 19.
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (2) 서블릿 1. 프로젝트 생성 준비물: Java 11, Intellij 생성: 스프링 부트 스타터 사이트에서 프로젝트 생성 - https://start.spring.io Gradle, Java, 2.4.x -> 3.1.5 Group : hello Artifact: servlet Name: servlet Package name: hello.servlet Packaging: War Java: 11 -> 17 Dependencies: Spring Web, Lombok Postman 설치 - https://www.postman.com/downloads 설정 : Build,Execution,Deployment > Build Tools > Gradle - Build and Run 관련 항목 IntelliJ IDEA로 .. 2024. 4. 9.
[Spring][Error] ObjectMapper의 readValue시 Unrecognized field "promt_filter_results" Spring에서 API 호출 이후 응답에 대해 ObjectMapper를 이용하여 HttpEntity의 body를 특정 Class에 값을 매핑시켜 사용 하고 있다. // 기존 응답 예시 { "id": "1201204567", "model": "gpt-35-turbo", "choies": [ { "finish_reason": "stop", "index": 0, "message": { "role": "assistanct", "content": "반가워요." } } ] } // 기존 Class 예시 public class GptResponse { private String id; private String model; private List choies; } 하지만 API 응답 결과에 새로운 field가 추가되.. 2024. 1. 19.
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (1) 웹 애플리케이션 이해 1. 웹 서버, 웹 애플리케이션 서버 웹 서버(Web Server) 정적 리소스 제공, 기타 부가기능(HTML, CSS, JS, 이미지, 영상 등) Ex) NginX, Apache 웹 애플리케이션 서버(WAS - Web Application Server) 프로그램 코드를 실행해서 애플리케이션 로직 수행 Servlet, JSP, Spring MVC Ex) Tomcat, Jetty, Undertow 웹 서버, 웹 애플리케이션 서버 차이 웹 서버는 정적 리소스, WAS는 애플리케이션 로직 웹 시스템 구성 - WEB, WAS, DB 웹 서버가 정적 리소스 처리 WAS는 중요 애플리케이션 로직 처리 전담 WAS, DB 장애시 WEB 서버가 오류 화면 제공 가능 2. 서블릿 웹 통신 과정 웹브.. 2023. 7. 26.
[Spring][Error] Java PKIX path building failed: Spring 에서 RestTemplate을 사용하여 https 통신을 하다 보면 PKIX path 오류가 발생하는 경우가 있다. 이는 JDK에서 인증서 확인 절차에서 오류가 발생한 문제다. 이를 해결하는 방법은 2가지가 있다. 1. 요청하고자 하는 사이트의 SSL인증서를 JDK에 추가 2. ssl 인증서 확인 절차를 무시하는 로직을 추가 요청하고자 하는 SSL 인증서를 다운받은 후 인증서를 추가하면 된다. sudo keytool -importcert -keystore ${JAVA_HOME}/lib/security/cacerts -storepass changeit -file {sslfile} Https 통신에서 ssl 인증서 무시 로직은 로컬환경인 경우에만 사용하는 것을 추천한다. 예제 코드는 아래와 같다.. 2023. 6. 16.
[Spring] 스프링 핵심 원리 - 기본편 (9) 이전 글 [Spring] 스프링 핵심 원리 - 기본편(8) 빈 스코프 빈 스코프란 스프링 빈은 싱글톤 스코프를 디폴트 값으로 생성 싱글톤 : 기본 스코프, 스프링 컨테이너 시작과 끝까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리 X 웹 관련 스코프 : - request : 웹 요청이 들어오고 나갈때까지 유지되는 스코프 - session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 - application : 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프 프로토타입 스코프 싱글톤 스코프 빈의 경우 조회시 항상 같은 인스턴스의 스프링 빈을 반환 프로토타입 스코프 빈의 경우 항상 새로운 인스턴스를 생성하여 반환 1. 프로토타입 스.. 2023. 4. 2.
[Spring] 스프링 핵심 원리 - 기본편 (8) 이전 글 [Spring] 스프링 핵심 원리 - 기본편(7) 빈 생명주기 콜백 빈 생명주기 콜백 시작 DB 커넥션 풀, 네트워크 소켓 등 애플리케이션 시작 시점에 필요 연결을 미리 해두고, 종료 시점에 연결을 종료를 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈의 라이프 사이클 객체 생성 -> 의존관계 주입 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출 필요 스프링은 의존관계 주입이 완료되면 스프링 빈에 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능 제공 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이프사이클 스프링 시작 -> 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 .. 2023. 3. 31.
반응형