Spring 13

[Spring] java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' 에러

spring boot 버전을 2.x -> 3.x , Java JDK 버전을 8 -> 21 로 업그레이드 했다. 그리고 테스트를 하기 위해 빌드했더니 이런 에러가 났다. 넌 누구니..? 찾아보니 lombok 버전이 구버전이라 나는 에러였다. 현재 내 pom.xml에는 버전이 명시되어있지 않다. org.projectlombok lombok org.projectlombok lombok 1.18.34 provided 1.18.34는 Java 21을 정식 지원하는 버전입니다. 😄

ISSUE 오답 노트 2026.04.02

[도서] '스프링 부트와 AWS로 혼자 구현하는 웹 서비스' 리뷰

📚 책 정보책 제목: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스저자: 이동욱출판 연도: 2019년 11월 29일(1쇄), 2024년 1월 31일(7쇄)장르: IT/프로그래밍 · 백엔드 개발 · 스프링 부트 · AWS ❓ 책을 고른 이유 ❓취업을 해서 개발을 해도 경력이 쌓이지 않는 한, 혹은 기회가 주어지지 않는 한 개발부터 배포까지 경험하는 일은 드믈다고 생각했다. 내가 그런 과정을 밟으며 이러한 생각을 했었던 거 같다. 그래서 혼자서 AWS로 구현하고 배포까지 진행해보고 싶었다. 그런 마음으로 찾아보다가 동료에게 이 책을 추천 받았다. 처음에 시작하기 좋은 책이라고 했다. 다른 책도 찾아봤지만 매우 두꺼웠다. 후딱 끝내고싶었고 전체적인 감을 느끼고 경험하고 싶어서 이 책을 선택하게 되었다. ..

개발 도서 2026.03.26

회원 가입, 탈퇴 API 개발

Spring boot 프로젝트 생성 프로젝트를 생성하기 이전에 앞서 사용할 어떤 프레임워크를 사용할지에 대해 고민하였습니다. 당연하게 Java 프로젝트 생성은 Spring boot 프레임워크를 사용해야 한다고 생각했습니다. 왜? spring b dawulle.tistory.com 이전 글에 fashion-commerce 프로젝트를 생성 후 기본적인 설정을 하였습니다. 이제 기능 구현에 대해 작성해 보려고 합니다. 우선 회원 관리 구현입니다. (회원 가입, 수정, 탈퇴, 로그인, 로그아웃) 회원이 존재해야 서비스에 로그인 하여 이용할 수 있겠죠? 회원 정보를 저장하기 위해 DB 관리 시스템으로 MySQL을 사용하였습니다. SQL의 종류는 다양하지만 MySQL을 선택한 이유는 아래와 같습니다. 오픈 소스 관..

Spring boot 프로젝트 생성

프로젝트를 생성하기 이전에 앞서 사용할 어떤 프레임워크를 사용할지에 대해 고민하였습니다.당연하게 Java 프로젝트 생성은 Spring boot 프레임워크를 사용해야 한다고 생각했습니다.왜? spring boot 프레임워크를 왜 사용할까요? Spring boot 프레임워크 이전 초기 기업들은 EJB(Enterprise Java Bean) 프레임워크를 사용하여 서비스를 했었습니다.EJB는 필요한 객체(비즈니스)를 컨테이너로부터 꺼내 사용하는 방식으로 EJB컨테이너가 없으면 작성한 코드를 사용할 수 없게되어 특정 기술에 종속됩니다.이해를 돋고자 간단한 예시를 들면, EJB 프레임워크를 사용하여 주문 시스템을 개발한다고 가정해보겠습니다.주문을 처리하기 위해 외부 결제 서비스와 통신해야하는데, 결제 서비스는 R..

레디스(Redis)란?

RDB vs NoSQL JSP를 공부하면 세트로 따라오는 것이 데이터이다. 웹사이트를 개발하더라도 사이트에서 저장되는 데이터가 있을 것이다. 그 데이터를 어떻게 저장하고 관리할 것이며 조작할 것인지에 대해 알 dawulle.tistory.com 이전 블로그 글 중 NoSQL에 대해 공부하며 포스팅을 한 적이 있다. 그때 NoSQL 중 하나를 사용해보며 공부 후 포스팅 해보기로 했었다. 미뤄두었던 걸 이번에 진행하는 프로젝트 개발에 기능 중 하나인 장바구니 기능에 NoSQL의 종류 중 하나를 적용해보고자 하였다. 그렇다면 각가의 특징에 대해 알아야 한다고 생각하여 첫번째로 Redis에 대해 알아보고 포스팅 해보려고 한다. 레디스(Redis)란? Remote Dictionary Server 의 약자로, 오픈..

카테고리 없음 2023.10.08

스프링 의존성 주입(DI) - 생성자 주입/수정자 주입/필드 주입

프로젝트 개발 중에 스프링을 사용할 때 생성자 주입방식을 적극 지향하고 있는데 그 이유를 명확히 설명하기 어려웠다. 뿐더러 장점을 정확히 알고 사용했다기보다는 스프링이 권장하는 방식? 이라는 이유때문에 사용했는데 특징은 무엇인지 장점과 단점에 대해 명확히 구분하여 사용해야하는데 라는 당연한 생각이 들어 알아보았다. 생성자 주입 방식 외에도 2가지가 더 있기때문에 주입 방식들에 대해 비교하여 공부하고 잊지 않기 위해 포스팅해보려고 한다. 위의 그림은 Spring의 삼각형이라 불리며, Spring의 핵심 구조를 나타낸다. 이 중 의존성 주입을 알아 볼 것이다. 의존성 주입 (Dependency Injection) 의존성 주입은 스프링 프레임워크의 3가지 핵심 프로그래밍 중에 하나이며, 외부에서 두 객체 간의..

Spring 2023.09.22

Spring AOP 로그인 검증

서비스를 이용하기 위해 패션 커머스 시스템은 로그인을 필수로 하고 있습니다. 로그인이 필수인 만큼 다양한 서비스를 이용할 때마다 로그인하는 과정에서 회원인지, 관리자인지를 확인하는 반복되는 걸 알 수 있었습니다. 그래서 반복되는 이 과정을 리팩토링 하고자 AOP를 알아보고 적용하였습니다. Spring AOP에 대해 이전에 AOP에 대해 공부한 포스팅을 바탕으로 간단히 알아보겠습니다. 1. Spring AOP (Aspect Oriented Programming) 관점 지향 프로그래밍으로, 기능을 핵심 비즈니스 기능과 공통 기능으로 구분합니다. 공통 기능을 개발자의 코드 밖에서 필요한 시점에 적용하는 프로그래밍 방법입니다. 즉, 관심사의 분리(기능의 분리) 부르며, 핵심 기능에서 공통되는 부가 기능을 분리하..

[JAVA] private static final과 private final 차이

프로그램 개발을 하다가 문득 private static final 과 private final 의 차이점에 대해 생각하게 되었다. 초기화한 값을 불변으로 만들기 위해서 라고 생각이 들었지만 명확한 설명이 부족하다고 생각이 들었다. 이전에 공부를 했었는데 결국 시간이 지나니까 까먹어가는 거 같아 명확히 차이점을 포스팅하여 남기려고 한다. Static?static은 사전적으로 '정적인', '움직임이 없는' 의미로, static을 사용하면 JVM의 static메모리에 올라간다.즉, static 데이터는 프로그램 실행 직후부터 끝날 때까지 메모리 수명이 유지된다. static 메모리에 올라가기 때문에 초기화 과정 없이 static이 선언 된 변수, 메서드에 바로 접근이 가능하다.static을 붙이면 해당 객체를..

JAVA 2023.09.13

Log4j & Logback & Log4j2의 차이

프로그램 개발 시에 콘솔을 출력하다 문득 성능이 느려지는 경험을 하였다. 관련해서 콘솔에 출력할 때에 성능적으로 개선할 수 있는지 찾아보았다. log 라이브러리인 log4j부터해서 logback, log4j2에 대한 많은 정보가 있었다. 이에 대해 각각 알아보고 올바르게 로그를 사용하여 출력하고 관리하고자 공부하여 포스팅해보았다. 먼저 log 라이브러리가 아닌 System.out.println()을 지양하는 이유는 이러하였다. 디버깅 목적으로 사용하지만 출력을 버퍼에 쌓은 다음에 화면으로 내보내는 방식으로 동작한다. 작은 양의 출력을 자주 호출하는 경우에는 버퍼링 작업이 불필요하게 쌓여 오버헤드를 발생 시킬 수 있다. 그 밖의 여러 스레드에서 동시에 호출 될 수 있어 출력이 혼란스러워지고, 동기 방식(동..

Spring 2023.08.25

Filter vs Interceptor vs AOP

토비 스프링 책을 탐구하며 스프링의 3요소 중 하나인 AOP에 대해 공부하는데 문뜩 Spring에서는 AOP말고 어떠한 로직을 실행되기 전 전처리 작업으로 지정할 수 있는 기능으로 Filter, 인터셉터도 있는데 AOP와의 역할의 차이에 대해 궁금하였다. 그래서 Spring MVC 생명주기 구조를 보며 흐름과 필터, 인터셉터, AOP의 대해 알아보고 그 내용에 대해 포스팅해보았다. 간단히 실행순서는 이렇게 진행된다. Filter → InterCeptor → AOP → Interceptor → Filter Filter (필터) Filter는 '거르다' 라는 뜻을 가지고 있는데 무엇을 걸러내는 것일까? 위의 그림에서와 같이 Filter는 DispatcherServlet 앞에 존재한다. Spring conte..

Spring 2023.07.16