프로그래밍/백엔드 16

Spring boot 3.2.x 버전에서 Spring Security 기본틀 구현

최신 릴리즈 버전인 3.2.x로 스프링 시큐리티를 구현한 포스트가 너무 없다. 이 때문에 해당 프로젝트 초기에 심적부담이 매우 컸던 기억이 난다. 우여곡절 끝에 프로젝트를 마무리했지만 스프링에 대한 지식의 흔들림이 느껴졌다. 이것이 '임포스터 증후군'의 시작 아닐까 싶다. 정상적으로 작동한다고 외면할 일이 아니라 스프링에 대한 전반적인 재학습이 필요함을 절실히 느낀다. 김영한 선생님 강의 충동구매 ㄱㄱ java 17 spring boot 3.2.x 1. SecurityConfig package com.org.mgt.common.config; import jakarta.servlet.DispatcherType; import lombok.RequiredArgsConstructor; import org.spr..

Spring 환경에서 네이버 클라우드 플랫폼(NCP) 파일서버 연동 구현 (Feat. AWS S3)

Azure에서 NCP으로 교체하는 요청이 있었다. 파일서버 연동은 처음이라 공식홈페이지의 샘플코드를 보면서 작업을 했지만 도통 뭔소린지 알 수 없어 꽤나 걱정이 많았던 작업이었다. 약 1주정도 무한 구글링을 하면서 필요한 지식들을 조각조각 모아서 테스트를 성공적으로 마쳤다. 너무 큰 고통을 받고나니 Spring과 AWS에 대한 공부가 많이 필요하다는 것을 느꼈다. java 17 Spring boot 3.2.x 1. build.gradle 설정 implementation 'com.amazonaws:aws-java-sdk-s3:1.12.638' 2. 클래스 구현 package com.org.mgt.common.util; import com.amazonaws.SdkClientException; import c..

Spring 6 과 Spring Boot 3.0 의 변경사항 정리

회사 프로젝트 프레임워크로 Spring boot 3 채택! 하지만 Thymeleaf 에 대한 팀원들의 숙련도가 낮았기때문에 Servlet 기술(JSP, JSTL, Tiles 등)를 활용하기로 했다. 하지만 Spring 6 에서 Servlet 기술들은 지원종료됐다는 사실을 모른 채, 하루종일 열나게 삽질했다. 삽질하고 이 글을 읽어보니 개발자가 패치노트를 항상 꾸준히 봐야하는 이유를 절실히 체감한다. 사실 이 덕분에 코딩이 더 재밌어졌고 앞으로도 더욱 재미있어질 것 같다. Spring 5.x -> 6.0 변경사항 JAVA 17기반으로 변경 일부 JAVA EE API 지원 종료 XML이 점차적으로 Spring에서는 사라질 예정이다. RPC 지원 종료 새로운 AOT 엔진 도입 @Inject 같은 JSR에서 지..

리눅스 서버에서 한글 깨질 때 (Tomcat 9, Ubuntu)

로컬호스트에서 정상적으로 작동했던 POST 전송이 서버에서는 400에러가 발생했다. putty로 해당 서버를 접속했고 apache-tomcat-9.0.62/logs 경로로 이동 후, tail -f catalina.out 커맨드를 입력하여 실시간로그를 분석했다. 로그에서는 로컬호스트에서 정상적으로 출력되는 한글이 서버에서는 한글깨짐현상이 발생하는 것을 확인했다. 이 현상은 다음과 같은 방법으로 해결했다. 서버에 설치한 톰캣 경로 /bin으로 이동 후 setenv.sh 파일 생성 후 아래의 코드를 입력한다. #!/bin/bash JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=\"utf-8\"" 이후 서버를 재기동하면 한글이 정상적으로 POST전송 되는 것을 확인 할 수 있다. (이걸 몰..

[Java] Eclipse server clean 오류 해결 방법

이클립스 svn 동기화 중에 lock이 걸린 상태로 overide commit 을 실행하다가 프로젝트 자체에 문제가 생겼다. 혹시나해서 tomcat 서버를 실행해봤더니 위와같은 오류가 발생했다. 구글링을 가이드대로 가장 먼저 server clean을 시도했다. 하지만 에러가 발생하여 clean을 할 수 없었다. /workspace/.metadata/.plugins/org.eclipse.wst.server.core/ 위경로에 생성된 tmp0, tmp1 ... 등의 퍼블리싱된 파일들을 삭제하고 server clean을 실행을 다시 해봤더니 정상작동하였다. 이후 project clean clean tomcat word directory를 실행했더니 정상적으로 서버를 가동시킬 수 있었다.

외부 API 호출 정리(GET, POST 방식)(feat. JWT토큰 활용)

코딩을 업으로 삼은지 6년차가 되었다. 최근 이직을 해보니 그동안 공부를 너무 설렁설렁해왔다는 것을 인지하게 되었다. 이론만 숙지하고 실제로 행동하지 못한 것들이 상당히 많았다. 교육생시절 웹 크롤링을 통해 URL호출을 해보기는 했었으나 정리를 해놓지 않아서 완전히 잊혀진 상태였고 SM(시스템 유지보수)일만 4년을 하다보니 API연동을 직접 해볼 기회가 없었다. 그래서 이론만 숙지하고 있었는데 이직한 회사에서 ZOOM API를 직접 연동하게되었다. 그리하여 최초로 코드정리를 하게 되었다. 대략적인 흐름만 기억하고 있어도 될듯 하다. HttpURLConnection: URL호출 OutputStream : form 데이터 넘겨주기(POST방식 사용시) responseCode : 결과코드확인(200이면 성공)..

Springboot에서 DB(mysql, application yml 방식) 연동 및 조회

Springboot에서 gradle library를 사용하는 경우 데이터베이스와 연동하는 방법과 데이터 저장 및 조회를 하는 방법을 간단하게 정리하였다. 데이터베이스연동 데이터베이스 저장 및 조회 데이터베이스 연동 프로젝트의 src > main > resource에서 application.yml 파일 생성 spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "" driver-class-name: com.mysql.cj.jdbc.Driver 데이터 저장 및 조회 package com.group.libraryapp.controller.user; import com.group.libraryapp.dto.user..