IoC (Inversion of Control) IoC는 "제어의 역전"이라는 의미로, 애플리케이션의 흐름 제어를 개발자가 아닌 프레임워크나 컨테이너가 담당하게 되는 디자인 원칙이다. 전통적인 프로그래밍에서는 개발자가 직접 객체를 생성하고, 해당 객체의 생명 주기를 관리했지만, IoC를 적용하면, 제어와 관리의 책임이 프레임워크나 컨테이너로 이동하게 됩니다. Spring에서는 IoC 컨테이너가 객체의 생명 주기 및 의존성 관리한다. 이처럼 IoC 는 클래스 내부가 아니라, 클래스 외부에서 제어권을 갖도록 하는 것을 말한다. 클래스 내부에서 객체를 생성하기 때문에 변경이 자유롭지 못하던 객체가, IoC 를 적용함으로써 외부에서 인자를 받아 변경이 자유로워졌음을 알 수 있다. 객체지향적 관점에서 보자면, I..
JwtTokenProvider 토큰 생성하고, 토큰을 복호화 해서 정보를 추출하고, 유효성을 검증하는 클래스입니다. jwt 토큰 구현 방식으로는 access Token, refresh Token 두가지 토큰을 사용하고, 인증 타입으로는 Bearer를 사용하였습니다. 최종 구현 코드 @Slf4j @Component // spring bean 등록 public class JwtTokenProvider { private final String key; private final Key jwtKey; private static final String BEARER_TYPE = "Bearer"; private static final String CLAIM_JWT_TYPE_KEY = "type"; private sta..
Spring Security를 적용하기 위해서는 @Configuration 어노테이션이 달린 설정 클래스를 구현해야 하고, 이 클래스에서 SecurityFilterChain을 생성하여 보안 필터 체인을 구성합니다. 이때 보안 필터 체인에서 사용할 Filter 클래스 중 하나로 OncePerRequestFilter 클래스를 선택하여 구현할 수 있습니다. OncePerRequestFilter 클래스를 본격적으로 살펴보기에 앞서서, Spring Security에서 Filter를 구성하기 위해 앞서 정의해야할 것들이 있어 이해를 위해 순서대로 차례로 정리해보겠습니다. @Configuration : 시큐리티 구성을 위한 클래스 기존 방식으로 @configuration 어노테이션이 달린 설정 클래스는 아래와 같이 ..
회원 정보 조회하는 경우, 탈퇴처리된 상태의 회원은 조회가 안되도록 예외처리를 해야하는 상황이 있었다. 당시 controller-service의 역할에 대한 개념이 불명확해서 어디서 예외처리를 해줘야하는지 고민을 한참 했었다.(ㅎㅎ..하하) 그러다가 나와 비슷한 고민을 하는 분의 질문에서 프로그래밍 로직을 이렇게 한다는 답변을 보게 되었다. " view -> validation logic -> business logic -> dao " 보통의 view는 controller에서 처리하고, 여기서 예외처리는 validation logic에 해당하므로 service에 넣어주는게 맞다고 생각했다. 그리고 아주 단적으로 controller가 없더라도 API 로직은 정상적으로 돌아가야한다는 김영한님의 답을 어디선가..
스프링부트는 스프링 프레임워크를 이용해서 더 쉽고, 빠르게 개발할 수 있는 도구입니다. 본격 시작하기 앞서 스프링부트를 개발 환경을 세팅해야합니다. 💡해야 할 일 1. InteliJ를 이용해서 스프링부트 설정하기 2. MariaDB 설치 먼저 InteliJ를 설치하고 프로젝트 세팅해보도록 하겠습니다! 1. InteliJ를 이용해서 스프링부트 설정하기 1. InteliJ 다운로드 하기 https://www.jetbrains.com/ko-kr/ JetBrains: 소프트웨어 개발자 및 팀을 위한 필수 도구 www.jetbrains.com InteliJ는 Ultimate버전, Community버전으로 나뉘어져 있습니다. 둘의 차이점은 단연 무료버전 유료버전이지만 더 자세히 살펴보자면 이러합니다. Ultimat..
- Total
- Today
- Yesterday
- MongoDB
- MultipleBagFetchException
- insertOne
- QueryDSL
- java.lang.NullPointerException: Parameter specified as non-null is null
- Kotlin
- JPA
- Git
- addFilterBefore
- 배열
- checkout
- Spring Security
- document insert
- dto 클래스 생성자
- Cannot construct instance of
- 스프링오류
- insertMany
- array
- ChatGPT
- port
- junit5
- FetchJoin
- 장애 대응
- Linux
- spring boot 3
- ?.let
- 문자열계산기
- n+1
- 추상클래스
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |