본문 바로가기

Spring8

[Spring] Spring security Bcrypt에 대해서 현재 사내 인트라넷 API를 계속 개발하고 있다.직원정보 등록 API를 작성하고 있다.직원정보를 등록할 때 인트라넷에 로그인할 때 쓰이는 비밀번호(PW)값 또한 저장을 한다.이 비밀번호를 DB에 저장할 때 ‘보안’ 처리 후 저장을 할려고 한다. 그러면 두 가지 방식을 고려할 수 있다.암호화와 해싱 방식이 있다. 우선 이 두 가지에 대해서 알아보자.암호화(Encryption) vs 해싱(Hashing)암호화 (Encryption)암호화는 양방향 프로세스이다. 특정 키(Key)를 사용해 원본 데이터를 아무나 읽을 수 없는 암호문으로 바꾼다. 그리고 나중에 동일한 또는 다른 키를 사용해 다시 원본 데이터로 되돌리는 **‘복호화’**가 가능하다.해싱 (Hashing)해싱은 단방향 프로세스이다. 원본 데이터를 고.. 2025. 8. 11.
[Spring][MyBatis] resultMap과 collection을 활용해 1:N관계 데이터 한 번에 가져오기 현재 사내 프로젝트에서 게시물 API를 구현하고 있다.게시물을 등록할 때, 여러 개의 첨부파일을 등록할 수 있도록 했다. 이처럼, 그 게시물의 상세정보를 불러올 때 1:N 관계의 데이터를 어떻게 하면 효율적으로 가져올 수 있을지 고민이었다. 찾아보니 이러한 1:N 관계의 데이터를 마이바티스에서 제공하는 과 을 활용하면한 번의 쿼리로 1:N 관계의 데이터를 객체 형태로 가져올 수 있었다. 우선 게시물과 첨부파일 테이블 구조를 알아보자. 게시물 정보 테이블 (BBS_INFO) 컬럼명 (Field)데이터 타입 (Type)제약 사항yEN">설명 (Comment)SQint(11)PK, auto_incrementyEN">시퀀스BBS_TYPEchar(1)default ‘N’yEN">게시글타입 (N,F)TITL.. 2025. 7. 18.
[Spring] ExceptionHandler를 활용한 자동 예외 처리 (w.RestControllerAdivce) 사내 인트라넷 API 개발을 계속해서 하고 있다. API를 작성하면서 INSERT나 UPDATE API 작성 시 반복되어 작성하는 Exception 처리가 있다. 등록 API // 게시물 등록@Overridepublic ResDTO insBbsInfo(BbsDTO bbsDTO) throws Exception { ResDTO res = new ResDTO(); try { configDao.insBbsInfo(bbsDTO); //TODO: 첨부파일 업로드 로직 // 첨부파일이 있는 경우, 첨부파일 정보(파일명, 파일path)를 저장하기 위해 게시글 SQ select. log.info("게시물 ID : " + bbsDTO.get_seq()); .. 2025. 7. 15.
[Spring][MyBatis] PageHelper로 페이징 처리하기 현재 사내 인트라넷 리뉴얼 작업을 하고 있다. 프로젝트 기술 스택으로 백엔드에 Spring Boot + Gradle + MyBatis, 그리고 프론트엔드는 회사 처음으로 React를 도입하여개발하고 있다. 개발 중 공지사항이안 자료실 목록에 필수적인 페이지네이션 기능 구현이 필요했다. 기존에 LIMIT와 OFFSET에 직접 페이지 번호(page)와 사이즈(size)를 파라미터로 넘겨 처리했지만,서칭을 해보니 Mybatis에서 PageHelper 플러그인을 알게 되어서 포스팅 해본다. 그래서 PageHelper가 무엇이고, 어떻게 동작하며, 그리고 Spring Boot 프로젝트에 어떻게 적용하는지 알아보자. PageHelper란 무엇이고 어떻게 동작할까? PgaeHelper는 MyBatis의 강력한 페.. 2025. 7. 11.
[Spring][JAVA] Spring에서 주중(월~금)만 스케줄러 실행하기 현재 내가 진행하고 관련 프로젝트에서 매 1분 단위로 DB에 데이터 수집하고 있다. 하지만, 예외 사항으로 매 1분씩 데이터 수집이 안될 때가 있다. 즉, 결측이 발생할 수 있다. 이에 대해서 결측 이력을 별도로 DB에 저장하고 있다. 이 저장된 결측 이력을 매일 아침마다 이메일 템플릿을 통해 메일로 전달받는 서비스를 구현하고 운영 중이다. 원래 같은 경우 매일 아침 8시 15분에 실행되게 하였는데 회사에서 주말에 메일 받는 걸 꺼려해서(어차피 보지도 않을 거면서 참) 주중(월~금)에만 메일이 가도록 설정하고자 한다. 1. ✅ Spring cron 표현식 구조앞서 Spring cron 표현식에 대해 알아보자. Srping에서 사용하는 cron 표현식은 총 6개의 필드로 구성된다.초 분 시 일 월 요일 .. 2025. 4. 14.
[Spring] MariaDB 연동 및 연동 테스트 Spring Legacy Project with MariaDB Maria DB 설치 MariaDB Foundation 위 사이트에서 다운로드 후 설치 본인은 10.11.4 버전 설치함 Spring과 연동 pom.xml에 mariadb 의존성 추가 root-context.xml에 bean 등록 pom.xml org.mariadb.jdbc mariadb-java-client 3.0.8 버전은 알아서 root-context.xml url, username, password 본일 껄로 연동 테스트(JUnit) @Log4j public class jdbcTest { static { try { Class.forName("org.mariadb.jdbc.Driver"); } catch(Exception e) { e.p.. 2023. 8. 7.
[Spring] Log4j cannot be resolved to a type 에러 어노테이션으로 Log4j를 사용할 때 제목과 같은 에러 발생 해결 pom.xml에서 log4j dependency에서 runtime을 주석처리해주면 된다. log4j log4j 1.2.15 javax.mail mail javax.jms jms com.sun.jdmk jmxtools com.sun.jmx jmxri 2023. 7. 27.
[Spring Legacy Project] Maven 업데이트 시 자바버전이 변경되는 현상 pom.xml을 변경하고 maven update 시 프로젝트 자바 버전이 1.6으로 변경되는 현상 pom.xml 내 properteis 태그 내 java-version을 1.8(해당 자바버전으로)로 수정 1.8 3.1.1.RELEASE 1.6.10 1.6.6 그리고 build 태그 내 org.apache.maven.pugins의 source와 target 버전 또한 고쳐야 함. org.apache.maven.plugins maven-compiler-plugin 2.5.1 1.8 1.8 -Xlint:all true true 이렇게 pom.xml 수정 후 maven update 하게 되면 오류 사라짐. 2023. 7. 24.