본문 바로가기

Spring9

[Spring] - 인증과 인가 웹 애플리케이션을 구현할 때 아마도 가장 먼저 접하게 되는 부분이 회원가입 및 로그인 서비스 구현이다. 사용자가 서비스를 보다 더 안전하고 효율적으로 사용할 수 있도록 하는데 있어, 인증(Authentication) 과 인가(Authorization) 과정은 매우 중요하다. 인증과 인가가 필요한 이유 사용자와 관리자와 같이 특정 역할에 따라 접근할 수 있는 데이터에 제한을 두고자 할 때, 인증과 인가가 필요하다. 이렇게 권한별로 접근을 달리함으로써 데이터를 보다 안전하게 관리할 수 있게 된다. 🏷️ 인증 (Authentication)이란? ◽ 인증은 사용자가 누구인지 확인하는 단계이다. ◽ 인증의 대표적인 예로 '로그인'이 있다. 🏷️인가 (Authorization)란? ◽인증을 통해 검증된 사용자가 애.. 2024. 3. 7.
[Spring] - @RestControllerAdvice를 통한 커스텀 예외 처리 작성 방법 Postman을 통해 request에 대한 response를 받을 수 있는데, 에러가 발생 시 이해하기 어려운 장문의 문장들이 뜨는 것을 볼 수 있다. 시스템적인 문제부터 클라이언트의 문제까지 에러의 종류는 다양한데, 서버측에서 명확하게 파악할 수 있는 에러들은 따로 정의해서 사용자가 알아보기 쉽게 할 방법을 찾아보기로 하였다. @RestControllerAdvice @ControllerAdvice + @ResponseBody 형태로, RESTfull한 웹 서비스를 개발할 시 예외 처리 로직을 구현할 때 적합하다. @RestControllerAdvice 를 사용함으로써, 컨트롤러 계층 전반에서 발생하는 예외들을 한 곳에 서 효율적으로 관리하고 처리할 수 있게 된다. 즉 @RestControllerAdvi.. 2024. 2. 27.
[Spring 🤔] - @Autowired vs @RequiredArgsConstructor 궁금증 배경 ) 스프링 부트 핵심 가이드 책을 보면서, 책에선 @Autowired를 통해 외부 인터페이스의 생성자를 작성하는 반면 나는 @RequiredArgsConstructor로 외부 인터페이스 의 생성자코드를 생략해서 쓰고 있었다. 이 둘의 차이점은 뭐고 사실 정확히 어떤 이유로 사용하는 이참에 알아보기 위해 조사해보게 되었다.! Q1. @Autowired와 @RequiredArgsConstructor의 공통점, 사용 목적은? A : @Autowired와 @RequiredArgsConstructor은 둘 다 의존성 주입!(Dependency Injection)을 달성하기 위한 목표를 가지고 있다. Q2. @Autowired와 @RequiredArgsConstructor의 차이점은? A : '@Aut.. 2024. 2. 22.
[Spring 🤔] - lombok @Builder, @NoArgsConstructor, @AllArgsConstructor의 사용에 대해 궁금증 배경 ) 강의를 듣다보니 자연스럽게 (무의식적으로) @Builder, @NoArgsConstructor, @AllArgsConstructor를 적고 있는 나를 발견했다.. 파악한 부분은 대강 @Builder는 그냥 써도 되지만, 만약 @NoArgsConstructor를 쓰게 된다면 @AllArgsConstructor를 필수적으로 붙여줘야 한다는 것이였다.. 그렇지만 왜? 쓰지는 궁금하여 찾아보게 되었다. ✅ 엔티티 클래스를 생성할 때 Builder 패턴을 쓰게 된다. 이유는 엔티티의 모든 속성들을 다 설정할 필요없이 필요한 값만으로 객체를 쉽게 생성할 수 있기 때문이다. Q1. 그렇다면 @Builder는 @AllArgsConstructor 와 함께 써야 하는걸까? A : 앞서 Builder는 생성.. 2024. 2. 19.
[Spring] - 데이터베이스 ORM(Object Relational Mapping) ▫ 뜻 : 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(Relational Database)의 테이블을 자동으로 매핑하는 방법 ⚠ 객체의 클래스와 데이터베이스의 테이블의 속성은 정확하게 일치하진 않는다. ➡️ ORM 이 이 둘의 불일치와 제약사항을 해결하는 역할을 해준다. ▫ ORM의 장점 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다. 쿼리문을 작성하는 양이 줄어든다. 객체 지향적으로 DB에 접근할 수 있어 코드의 가독성이 높아진다. 재사용 및 유지 보수가 편리하다. 객체들은 각 클래스로 나누어져 있어 재사용 및 유지보수가 수월하다. 데이터베이스에 대한 종속성이 줄어든다. ORM을 통해 자동 생성된 SQL문은 객체를 기반으로 DB 테이.. 2024. 2. 13.
[Spring] - Controller vs RestController 컨트롤러란 컨트롤러의 역할 ▪ 비즈니스 로직과 클라이언트의 요청을 연결해준다. ▪ 클라이언트로부터 요청을 받고, 해당 요청에 대해 서비스 레이어에 구현된 적절한 메서드를 호출해서 결과값을 받는다. ▪ 요청과 응답을 전달하는 역할만 맡는다. ▪ (@Controller 사용시 주의..) "member/login"과 같은 경로를 접근할 때 Spring Boot는 가장 먼저 @Controller 또는 @RestController에서 매핑된 경로를 찾게 된다.! ➡️ Controller란? @Controller는 전통적인 스프링 MVC 컨트롤러를 정의할 때 사용된 것으로, 주로 뷰 템플릿을 반환하는 데 사용한다. 예를 들어, Thymeleaf나 JSP와 같은 뷰 템플릿을 렌더링하기 위해 사용한다. @Control.. 2024. 2. 4.