전체 글(34)
-
Docker
1. 정의 어플리케이션을 신속하게 구축, 배포, 실행할 수 있게 만든 컨테이너 기반의 오픈 소스 플랫폼이다. ** 컨테이너 컨테이너는 개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섬을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술입니다. 1) 가상머신 가상 머신은 실제 컴퓨터의 가상 표현 또는 에뮬레이션입니다. 하나의 물리적 시스템에 각각 자체의 OS(Guest OS)와 Application을 가진다는 특징이 있습니다. 3. 장점 1) 독립적인 실행 환경 ** 유지 보수 용이 2) 가상머신보다 가볍고 빠름 ** Application에서 자체 OS가 없음, 이로 인해 OS에 필요한 라이..
2024.05.16 -
LazyInitializationException
LazyInitializationException: could not initialize proxy - no Session -> 모든 Entity의 접근을 Lazy전략으로 접근 접근 방법 : 1. 관련 메서드마다 @Transactional -> 연관 관계를 가지고 있는 Entity가 자동으로 초기화되지 않음 -> 이로 인해 해결되지 않음 2. application.yml : open-in-view 사용 -> open-in-view : true 설정으로 인한 문제점이 많음 1. 성능 저하 : 데이터베이스 연결을 오랫동안 가지고 있음 2. 트랜잭션 범위와 세션 범위의 혼동 : 세션은 열지만 트랜잭션 확장에는 어려움이 있음 3. N+1 쿼리 문제 발생 -> 해당 패턴은 안티 패턴 : 성능적 문제 발생 가능성이..
2024.02.05 -
Access Token과 Refresh Token(0)
0. 개요 Spring boot의 Security을 이용하여 JWT Token을 만들고 회원 가입을 하면 Access token과 Refresh Token을 발급하고 로그인 절차에서 Access token이 유효한지 확인 후, 메인 페이지로 이동하는 절차 ** 만약 Access Token이 유효하더라도 Refresh Token의 만료 기간이 지났다면 로그인은 되지 않으며 Refresh Token을 재발급 합니다. 1. Access Token이란? 1) Session방식이 아닌 SignatureAlgorithm.HS256을 사용한 jwtToken 2) 해당 Jwt Token은 인증에 필요한 정보가 토큰 안에 존재합니다. // Payload에 email 또는 username이 들어가 있습니다. 3) 기존에 ..
2023.12.21 -
@Value, @ConfigurationProperties에 대해서
0. 개요 Spring boot의 환경 변수를 지정해서 사용할 때, lombok의 @Value를 사용하는 것이 좋은지 또는 @ConfigurationPropreties를 사용하여 사용하는 것이 좋은지에 대한 의문에서 시작 되었습니다. 1. @Value 1) 환경 변수의 값을 단일으로 받아오기 위해서 사용합니다. 2) RelaxedBinding이 적용이 되어 있지 않기에 완벽하게 일치하는 프로퍼티 이름을 적어줘야합니다. ** RelaxedBinding : 프로퍼티 값이 조금 달라도 유연하게 바인딩 시켜주는 규칙 # application.yml spring : jwt: secretKey: ${jwt.secret-key} access-token-expiration: 86400000 # 1시간 refresh-t..
2023.12.20 -
Spring boot를 이용한 게시글에 AWS S3 이미지 업로드
0. 개요 Spring boot의 프로젝트 내부의 폴더 안에 MultipartFile을 받지 않고 S3를 이용하여 해당 MultipartFile을 받는 방법을 구현해보고자 합니다. ** 변경 사항으로 이미지를 S3에 업로드를 하고 해당 이미지 PATH는 db에 저장하는 방식 ** 페이징 처리 기술 포함 ** 해당 Spring boot 코드는 Security를 구현한 Board 이미지 업로드 ** 시큐리티 구현을 위해 github의 security부분 참고 https://github.com/parkjihwanKr/plusProject/tree/master/src/main/java/com/pjh/plusproject/Global GitHub - parkjihwanKr/plusProject Contribute..
2023.12.14 -
Spring boot 간단한 AWS S3 MultipartFile 업로드
0. 개요 Spring boot의 프로젝트 내부의 폴더 안에 MultipartFile을 받지 않고 S3를 이용하여 해당 MultipartFile을 받는 방법을 구현해보고자 합니다. 1. AWS S3를 이용하는 이유? 1) 많은 사용자가 접속을 해도 감당할 수 있다. 2) 저장 할 수 있는 파일의 수와 파일 용량이 5TB까지 저장이 가능하다. 3) 액세스키와 비밀키를 통한 인증을 하기에 안전하다. 4) 실수에 의한 데이터 손실이 발생하여도 자동으로 복원해준다. 2. Requirement Spring boot version 3.1.6 1. Stacks Springboot Loombook Spring Boot DevTools Spring Web 3. AWS S3와 Spring boot 연동 AWS S3 spr..
2023.12.13