728x90

SpringBootProject 9

SpringBoot : 프록시 패턴

프록시 패턴 (Proxy Pattern)실무에서 스프링 프레임워크를 사용하다 보면 다양한 방법으로 빈(Bean)을 등록하게 됩니다. 이 과정에서 프록시(Proxy) 개념은 매우 중요하게 다뤄집니다. 스프링의 핵심 기능인 AOP(관점 지향 프로그래밍)가 프록시를 기반으로 동작하기 때문입니다.일반적으로 스프링 빈을 등록하는 방식은 다음과 같이 나눌 수 있습니다.인터페이스와 구현 클래스 분리: 인터페이스를 정의하고, 구현체를 만들어 @Configuration과 @Bean을 통해 수동으로 스프링 빈에 등록합니다.구체 클래스만 사용: 인터페이스 없이 구체 클래스를 직접 만들어 수동으로 스프링 빈에 등록합니다.컴포넌트 스캔 활용: @Component, @Service, @Repository 등의 애너테이션을 사용하..

SpringBootProject 2025.07.15

SpringBoot: 템플릿 메소드 패턴

템플릿 메소드 패턴1. 문제 상황기존 동시성문제를 해결한 로그 추적/출력 기를 적용하려면, 수많은 서비스, 리포지토리, 컨트롤러의 코드를 수정해야할 필요가 있었다.하지만, 코드 구조상 class Sample{ public void smapleMethod(){ try{ // 로그 시작부 // 핵심 로직 // 로그 마침 }catch (Exception e){ throw new IlligalStateException(e) } }}이렇게 핵심 로직을 try-catch 문으로 감싸져있는 구조이고, try catch 가 없더라도, 시작부와 마침부 사이에 핵심로직이 들어가..

SpringBootProject 2025.07.11

SpringBoot : 동시성 문제

동시성 문제 정리보통, 스프링부트 프로젝트를 만들다보면, 자주 사용되는 객체를 계속해서 재생성 하기에는 메모리 낭비도 심하고, 지속해서 생성/삭제 하는 번거로움과, JIT 컴파일러가최적화 시켜주기 애매한? 좀더 심화해서는 에덴에 있음직한 친구가 에덴으로 못가는 문제가 있어서. 자주 이용해야하는 객체나 컴포넌트들을 싱글톤 패턴으로 생성하게 되는 경우가 많다싱글톤 패턴이란, 전역변수를 만드는 거랑 비슷하다고 보면 되는데, 객체를 하나 만들어 놓고 만들어진 객체를 여러 클래스들이 이용하게 하는 구조 패턴이다,예를 들면, DB에 접속하는 클래스나, 외부 API에서 정보를 가져오는 등... 여러 곳에서 필자또한 사용하고 있는데,스프링 심화편 강의를 듣다가 로그추적기를 만드는 실습을 진행하다가, 강사님 께서 로그추..

SpringBootProject 2025.07.09

Project Part1 - 로그인 구현하기. (5. Spring Security)

스프링 시큐리티(Spring Security)1. 스프링 시큐리티 :Spring 에서 만든 애플리케이션의 보안을 담당하는 하위 프레임워크(인증 : Authentication, 권한인가 : Authorization 등)인증 : 사용자가 누구인지를 확인하는 과정 권한 인가 : 인증된 사용자가 해단 자원에 접근할 수 있는지 판단 하는 단계. (권한 인가라고 해야하지만, 편의를 위해 권한 Permission 의 개념이라 생각해도 나쁘지 않음)Spring Security 를 사용하는 이우 : 조금 여러 가지 이유가 있을 수도 있는데, 오랜 세월동안 살아남은 시큐리티 프레임워크이다.초기 설정을 잘 해주면, 많은 로직을 작성 하지 않아도 보안 관련 서비스를 처리 해주는 편리함이 있다.2. 스프링 시큐리티의 특징과 ..

SpringBootProject 2024.11.28

Project Part1 - 로그인 구현하기. (4. 세션을 활용한 로그인 기법)

3.2. 기법2. 세션 활용하기.Session:session은 비밀번호와 같은 인증 정보를 쿠키에 저장하지 않고 대신에 사용자의 식별자인 session id 를 저장한다. 서버에는 인증 정보와 더불어 이 ID에 해당하는 사용자의 정보를 저장한다.세션은 서버에 저장하기 때문에 사용자가 수백, 수천, 수만으로 늘어난다면 해당 유저의 정보를 찾고 데이터 매칭에 오랜 시간이 걸리면서 서버에 부하가 생긴다.사용자의 로그인 상태를 유지하는 기능을 위해 쿠키에 아이디와 비밀번호를 담아두고 있습니다. 이렇게 된다면 개인 소유가 아닌 컴퓨터에서 사용할 경우 사용자의 개인정보가 털릴것이고, http로 개인정보를 주고 받다보면 쿠키가 유출, 조작이 될 수 있는 보안상 큰 문제를 야기한다.Session 을 사용하기 위한 기본..

SpringBootProject 2024.11.26

Project Part1 - 로그인 구현하기. (3. 쿠키를 활용한 로그인 기법)

쿠키 :사용자가 웹사이트 접속시 사용자의 개인 장치에 다운로드되고 브라우저에 저장되는 작은 텍스트 파일을 사용해 통신한다.쿠키 기반 로그인의 장점 :클라이언트에서 자동으로 인증 정보 관리쿠키는 클라이언트에 저장되어, HTTP 요청마다 자동으로 서버로 전송된다. 이를 통해 추가적인 인증 토큰을 매 요청마다 헤더에 추가할 필요가 없다.브라우저 자동 관리로 인해 개발자는 별도의 인증 상태 관리 코드를 최소화할 수 있다.세션 만료 및 자동 로그아웃 설정 용이쿠키의 만료 시간을 설정하면 사용자가 세션을 지속하거나 자동으로 로그아웃할 수 있게 되어 보안이 용이하다.만료 시간이 지나면 쿠키가 자동 삭제되므로, 장시간 접속하지 않으면 보안 리스크가 감소문제가 있긴하다.다양한 보안 설정 가능HttpOnly 설정을 통해 ..

SpringBootProject 2024.11.25

Project Part1 - 로그인 구현하기. (2. 로그인 컨트롤러, 로그인 기법)

-3 CONTROLLER컨트롤러에서 작업해줘야하는 서비스 목록.PASSWORD, PASSWORD_CHECK 가 맞는 지 확인.로그인, 로그아웃, 로그인 완료, 관리자 페이지 에 대한 URL반환.로그인 기법 정하기 (AccessTocken, cokie.. 등등 ) 3.1. 기법1. 쿠키 활용하기.COKIE // 공부하다 보니, 로그인 기법에 대해 좀 자세히 공부할 기회가 없었는데 이런거 저런거 많이 배워 가네욤...장점 : 편하다 쉽다! 간편하다!단점 : 보안상의 이슈가 발생하기 쉽다.Cookie_Login_Controller3.2. 기법2. 세션 활용하기 .Session장점 : 쿠키의 저장 스토리지를 서버로 옮기자! -> 보안상의 장점 가져갈 수 있음.단점 : 유저수가 많아지면 서버에 과부하 발생.Ses..

SpringBootProject 2024.11.25

Project Part1 - 로그인 구현하기. (1. 기본적인 로직)

-1. 로그인을 할 수 있는 여러가지 방식과 그에 따른 장단점을 분석해보는 작업을 하고 있다.-2. 공통 로그인 서비스 구현.User에 관련한 Entity, Dto, Repository, Service, Controller, View 등등을 구현한다.회원가입 서비스의 기본적인 로직.User (클라이언트) 의 입력IdPasswordPasswordCheckNicknameFrontendId, Nickname 중복 체크및 Data 적합성 판단Backend 에 Data 전달.(Id,Password,Nickname)BackendDB ConnectionId, Nickname 중복 체크 유저 정보 저장후 성공 여부 전송DB DisconnectionFrontend전송된 성공 여부에 관한 페이지 출력2-1 . 설계및 코드..

SpringBootProject 2024.11.24
728x90