springboot

    [SpringBoot] JPA Entity Listener 엔티티 이벤트 리스너

    [SpringBoot] JPA Entity Listener 엔티티 이벤트 리스너

    YOPLE서비스를 개발하면서 Entity가 저장될 때 또는 조회할 때의 이벤트를 캐치하여 처리를 해야 하는 이슈가 발생했다. 그러던 중 JPA에서 아주 편안한 기능을 제공한다는것을 알게 되었고 포스트로 기록을 남긴다. JPA에서는 Entity에 이벤트가 발생할 때 특정 처리를 할 수 있게 지원한다. Entity Listener Chapter 6. Entity listeners and Callback methods @PostPersistExecuted after the entity manager persist operation is actually executed or cascaded. This call is invoked after the database INSERT is executed. docs.jb..

    [SpringBoot] Log4j2 기본 사용법

    [SpringBoot] Log4j2 기본 사용법

    Log4j2 란? log4j(Log for Java)란 이전 버전인 Log4j 1.x에 비해 크게 개선된 Log4j로의 업그레이드이며 Logback 아키텍처의 몇 가지 고유한 문제를 수정하면서 Logback에서 사용할 수 있는 많은 개선 사항을 제공하는 대표적인 자바 로깅 프레임워크이다. og4j 2.13.0 이상에는 Java 8이 필요합니다. 버전 2.4~2.12.1에는 Java 7이 필요합니다(Log4j 팀은 더 이상 Java 7을 지원하지 않습니다). 일부 기능에는 선택적 종속성이 필요합니다. 이러한 기능에 대한 설명서는 필요한 종속성을 지정합니다. ## 중요: 보안 취약점 CVE-2021-44832 요약: Apache Log4j2는 공격자가 구성을 제어할 때 JDBC Appender를 통해 RCE..

    [SpringBoot] SOP, CORS  이야기

    [SpringBoot] SOP, CORS 이야기

    CORS 이슈는 프론트 서버와 백엔드 서버가 분리되어 있다면 1번쯤은 꼭 만나는 이슈이다. CORS를 먼저 이야기하기전에 SOP에 대해서 이야기해 볼 예정이다... ● SOP (Same Origin Policy) 말 그대로 "같은 출처 정책"이다. 출처?????? 출처가 무엇인가? Origin (출처)란? - URI 스키마 (http, https) - 호스트 (person.jjhserverworld.pe.kr, localhost, naver.com... ) - 포트 (8080, 18080, 80) 위 3가지의 조합이 출처 이다.!! 먼저, Spring-boot에서는 기본적으로 아무것도 설정하지 않는다면 SOP 정책을 따른다. 즉, 자바스크립트 엔진 표준 스펙의 정책으로 호스트, 포트, 프로토콜이 같은 요..

    [SpringBoot] Security 인증 절차 시 DB Access 여러번 일어나는 이슈.

    [SpringBoot] Security 인증 절차 시 DB Access 여러번 일어나는 이슈.

    ● 이슈 발생 시점 SpringSecurity를 이용해 JWT 인증/인가 절차를 CustomTokenProvider, CustomUserDetailsService를 정의하여 개발하고 있었다. 1. 정상적인 아이디와 비밀번호로 인증 요청이 오면 DB에 유저가 있는지 확인하는 CustomUserDetailsService.loadUserByUsername()이 1번만 실행됨. ( 예상한 로직과 실제 정상적인 로직 ) 2. 비정상적인 아이디와 비밀번호로 인증 요청이 오면 CustomUserDetailsService.loadUserByUsername()이 여러 번 실행됨 ( 예상하지 못한 로직과 비정상적인 로직.... ) ● 분석 1. Provider의 authenticate는 ProviderManager에서 호..

    [SpringBoot] 종속성 순환 에러 트러블슈팅

    [SpringBoot] 종속성 순환 에러 트러블슈팅

    AOP (Aspect Oriented Programming)를 공부하다가 "종속성 순환 에러"가 발생하였다. 해당 이슈에 대해 슈팅해보겠다. ● 트러블 이슈 각 메서드 ( Controller, Service, Repository )에서 처리 시간을 처리하는 AOP를 만드는 도중 아래 에러 메시지가 발생하였다. The dependencies of some of the beans in the application context form a cycle: memberController defined in file [C:\Users\pc\Desktop\hello-spring\hello-spring\out\production\classes\hello\hellospring\controller\MemberControl..

    [SpringBoot] StereoType, @Component과 @Bean 차이점

    [SpringBoot] StereoType, @Component과 @Bean 차이점

    이번 포스트에서는 @Bean과 @Component 어노테이션의 차이점을 알아볼 것이다. @Component로 지정된 클래스들은 모두 스프링에서 Bean으로 등록된다. @Component 어노테이션은 스프링 컨테이너에서 사용되는 StereoType인데 먼저 StereoType이란 무엇인지 살펴본다. StereoType이란? StereoType의 의미는 "고정관념". "정형화된 생각"이라고 한다. 스프링에서는 스프링 컨테이너가 관리 컴포넌트로 식별할 수 있게 해주는 마커 같은 의미를 지닌다. 이전 버전에서는 XML 파일에 Bean들을 모두 명시하여 관리하고 있었다. 하지만 이러한 관리는 XML 파일의 거대화를 막지 못하였다. 그래서 아래의 버전부터 어노테이션이 등장하기 시작했다. Spring 2.0 : @R..

    [Java] Log4j 원격코드실행 이슈 JNDI injection

    [Java] Log4j 원격코드실행 이슈 JNDI injection

    2021-12-12일 갑작스럽게 뉴스에 "역사상 최대의 취약점 발견"이라는 문장으로 혼란스러운 소식이 들렸다. 어떤 이슈인가 알아보니 Log4j 에드온에서 원격코드를 실행할 수 있는 이슈였다.... log4j 에드온은 현시점에 JAVA를 사용하고 있는 인터넷 서비스 중 대부분이 사용하는 에드온이다. 그 말은 즉 모든 서비스에서 취약점이 발생할 수 있다는 점.. ● Log4j 란? Log4j는 Apache Software Foundation에서 개발한 인기 있는 Java 로깅 프레임 워크이다. ● 이슈 Apache Log4j 2.x ver에서 발생하는 취약점 (CVE-2021-44228)을 통해서 원격코드 실행이 가능한 이슈. CVE-2021-44228 취약점은 CVSS Score 10으로 가장 높은 취약..

    [Java] CheckedException과 UncheckedException이야기

    [Java] CheckedException과 UncheckedException이야기

    이번 포스트에서는 Exception에 대한 이야기를 써보려고 한다. 요즘 프로그래밍을 배우는 개발자들을 보면 Exception의 처리를 중요시하지 않는 경우가 많다. 또 Exception이 무엇인지 질문하게 되면 제대로 대답하는 이들이 적다. 단순히 Exception 암기 방식으로 몇가지 예외를 외우고 해당 서비스를 구현할 때 try/catch문을 사용하는 공식적인 공부를 하는 것 같다. 이 포스트를 통해 Exception에 대해 알아보자. 먼저 Error와 Exception이 무엇이 다른지를 알아야 한다. ● Error와 Exception는 어떻게 다를까? 오류(Error)는 시스템 레벨에서 발생하며 심각한 수준의 오류이다. 시스템에 비정상적인 상황이 발생한 경우이며, 개발자가 미리 예측하여 대비할 수..