본문 바로가기

Spring8

[Spring] 쓰레드 동시성 문제와 ThreadLocal 쓰레드의 동시성(Concurrency) 싱글 코어에서 멀티스레드를 동작시키기 위한 방식으로, 멀티 태스킹을 위해 여러 개의 스레드가 '번갈아가면서' 실행되는 성질을 말한다. 그래서 이는 정말 물리적으로 동시에 동작하는 것은 아니다. 각각의 쓰레드는 위와같이 code, data, files 등을 공유하며, 독립적인 레지스터와 스택을 가지고 있다. 한 프로세스에 있는 스레드 들은 같은 address space에 있기 때문에 서로의 레지스터, 스택 간의 접근이 가능하다. 데이터 영역에는 전역변수와 정적변수가 해당된다. 동시성 문제 여러 쓰레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제를 동시성 문제라 한다. 이런 동시성 문제는 여러 쓰레드가 같은 인스턴스의 필드에 접근해야 하기 때문에 트래픽.. 2023. 9. 1.
Spring boot 3.x 에서 Java 20 실행 오류, IntelliJ에서 자바 버전 변경 스프링 부트 3.0은 Java17 이상을 사용해야한다. 자바 버전 문제로 고생을 겪고 싶지 않았던 나는 꿋꿋이 Java11을 써왔지만... 새로운 것도 써보긴 해야지! 싶은 마음에 스프링 부트 3.0.6에 Java20 을 사용해본다. 스프링 부트 3.0 주의점 Java 17 이상을 사용해야 한다 javax 패키지 이름을 jakarta로 변경해야 한다 오라클과 자바 라이센스 문제로 모든 javax 패키지를 jakarta로 변경하기로 함 ex) javax.validation -> jakarta.validation 1. 다운받은 JDK를 추가한다 File -> Project Structure -> Platform Settings -> SDKs 2. 프로젝트가 사용할 JDK를 설정한다 File -> Projec.. 2023. 5. 18.
JWT(Json Web Token)를 이용한 로그인 인증에 대하여 졸업프로젝트 시 로그인 구현에 있어서 어려움을 겪었다. 초기엔 쿠키-세션 방식으로 구현하였으나 프론트와의 상의 후 JWT로 바꾸기로 했었고 이 과정에서 JWT와 Spring Security를 조금 공부했었다. 당시 정리한 내용에 살을 붙혀 포스팅 해본다. JWT(Json Web Token) 란? JWT(Json Web Token)은 일반적으로 클라이언트와 서버 통신 시 권한 인가(Authorization)을 위해 사용하는 토큰이다. 토큰 이란 간단히 말하면 로그인 이후 서버가 만들어서 사용자에게 넘겨주는 문자열이다. 이 문자열은 사용자 정보가 암호화 되어있고 이 토큰을 이용하여 인증된 사용자인지 서버가 판단한다. JWT 구조 JWT는 세 파트로 나누어지며, 각 파트는 점로 구분하여 xxxxx.yyyyy... 2023. 4. 5.
[Spring] 서블릿, JSP, MVC 패턴 서블릿, JSP, MVC 패턴 비교 서블릿 은 자바 기반의 웹 애플리케이션 프로그래밍 기술로, 1997년 부터 사용되었다. 서블릿은 HTML 생성이 어렵다는 문제점이 있어, HTML 코드에 동적으로 자바 코드를 섞어 사용할 수 있는 뷰 템플릿 엔진인 JSP 가 1999년 등장하였다. JSP를 사용하면 편리하게 HTML생성이 가능했으나, 비즈니스 로직까지 너무 많은 역할을 담당한다는 문제가 있었다. 때문에 이후 서블릿, JSP를 조합한 MVC 패턴을 사용하여 모델, 뷰 컨트롤러로 역할을 나누어 개발하였다. 간단한 회원 저장 기능을 예로 들어보자. 서블릿으로 회원 저장 @WebServlet(name = "memberSaveServlet", urlPatterns = "/servlet/members/save").. 2022. 7. 28.
[Spring] 서블릿(Servlet) 이란? 서블릿(Servlet) 이란? 서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다. 서블릿을 사용하는 이유 회원의 이름과 나이를 DB에 저장하는 간단한 WAS를 예로 들어보자. // 웹 브라우저가 생성한 요청 HTTP 메시지 - 회원 저장 POST /save HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded username=kim&age=20 // 서버에서 HTTP 응답 메시지 생성 HTTP/1.1 200 OK Content-Type: text/html;charset.. 2022. 7. 28.
[Spring] 스프링 AOP 개념, 용어 정리 핵심 기능과 부가기능 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다 핵심 기능 : 해당 객체가 제공하는 고유의 기능 (ex. OrderService 의 핵심 기능은 주문 로직) 부가 기능 : 핵심 기능을 보조하기 위해 제공되는 기능 (ex. 로그 추적 로직, 트랜잭션 기능) 이러한 부가 기능은 단독으로 사용되지 않고, 핵심 기능과 함께 사용됨 여러 곳에서 공통으로 사용하는 부가기능 보통 부가 기능은 여러 클래스에 걸쳐서 함께 사용된다. 예를 들어서 모든 애플리케이션 호출을 로깅 해야 하는 요구사항을 생각해보자. 이러한 부가 기능은 횡단 관심사(cross-cutting concerns)가 된다. 쉽게 이야기해서 하나의 부가 기능이 여러 곳에 동일하게 사용된다는 뜻이다 그런데 이런 부가 .. 2022. 7. 28.