Spring Boot에서 REST 컨트롤러 활용하기: @RestController 어노테이션 이해하기
·
Spring/Spring 기초 지식
@RestController는 주로 API를 생성할때 작성되는데 이번 시간에 한번 알아보도록 하자 1. Spring Boot의 REST Controller 1-1. Spring Boot의 REST Controller 이해하기 웹 서비스를 구축할 때 REST(Representational State Transfer) 아키텍처 스타일을 자주 접하게 된다. REST는 웹 서비스의 핵심으로, 자원(Resource)을 중심으로 설계되며, 이 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행한다. Spring Boot에서는 이러한 RESTful 웹 서비스를 구현하기 위해 @RestController 어노테이션을 활용한다. 이 어노테이션은 클래스 레벨에서 사용되며, 해당 클래스의..
Spring Boot 심화: 커스텀 어노테이션 만들기 (2편)
·
Spring/Spring 기초 지식
커스텀한 어노테이션(Custom Annotation)이란 무엇일까? 그리고 우리가 주로 사용하는 어노테이션을 분석해보자 1. 커스텀 어노테이션을 만드는 방법 Java에서는 사용자 정의 어노테이션을 만들 수 있다. 이를 위해선 @interface 키워드를 사용하면 된다. // @interface를 통해 어노테이션을 정의한다. public @interface MyCustomAnnotation { String value() default ""; int number() default 0; } 위의 예제 코드에서, MyCustomAnnotation은 어노테이션의 이름이다. value와 number는 이 어노테이션의 요소(또는 매개변수)이며, 기본값으로 각각 빈 문자열과 0을 가지고 있다. 어노테이션 요소의 유형은..
Spring Boot 기초: 어노테이션 활용하기 (1편)
·
Spring/Spring 기초 지식
Spring에서 자주 사용되는 @로 작성하는 어노테이션이 뭔지 알아보자 1. 어노테이션 - Annotation 어노테이션은 주로 프로그래밍 언어에서 특정 기능이나 동작을 정의하거나 설명하는데 사용되는 메타데이터를 말한다. 주로 자바, 파이썬 등에서 많이 볼 수 있다. 어노테이션의 출현 배경은 주로 두 가지 이유에서 비롯된다. 코드의 가독성 향상: 어노테이션은 코드의 특정 부분이 어떤 목적을 가지고, 어떻게 동작하는지를 명확하게 표현할 수 있게 한다. 따라서 개발자는 코드를 읽을 때 어노테이션을 통해 빠르게 이해할 수 있다. 코드의 간결성: 특정 패턴이나 템플릿 코드를 반복해서 작성하는 것은 번거로울 뿐만 아니라 실수를 유발할 수 있다. 어노테이션을 통해 이러한 반복적인 코드를 줄이고, 개발자가 실제 로직..
Spring Boot: Tomcat 환경변수 설정
·
Spring/Spring 설정
SpringBoot에서 Tomcat에 환경변수를 설정해 보자 📌 서론 스프링부트를 사용하다 보면 application.properties나 application.yml에 환경변수(api키, db연결정보)를 적은 채로 github에 그대로 push 해서 코드를 노출하는 경우가 있는데 이것은 너무나도 보안적으로 위험하기 때문에 이것을 로컬환경에서 tomcat configuration으로 구성하는 방법에 대해 설명하도록 하겠다. 1. 스프링부트3에서 내장 Tomcat에 환경변수를 설정하는 방법 application.yml 확인 우리는 개발할때 application.properties 또는 application.yaml 파일에 스프링부트의 설정을 하게 되는데 이때 이 파일을 그대로 github에 올리면 우리의 ..
Spring Boot 3.1 & Spring Security 6: 로그인 프로세스 및 JWT 토큰 동작 설명 (10편)
·
Spring/Spring Security
지금까지 만든 시큐리티의 동작을 설명하겠다. 1. 로그인 과정 로그인 페이지 접근: 사용자는 웹 브라우저에서 로그인 페이지(/login)에 접근한다. 로그인 페이지에는 사용자 이름과 비밀번호를 입력할 수 있는 폼이 있다. 로그인 요청: 사용자가 자신의 사용자 이름과 비밀번호를 입력하고 "Login" 버튼을 클릭하면, AJAX 요청을 통해 서버에 로그인 요청(/user/login)이 전송된다. 인증 필터 처리: CustomAuthenticationFilter는 로그인 요청을 가로챈다. 이 필터는 UsernamePasswordAuthenticationFilter를 확장하여 구현되었다. 요청에서 사용자 이름과 비밀번호를 추출하여 UsernamePasswordAuthenticationToken 객체를 생성한다...
Spring Boot 3.1 & Spring Security 6: 로그인 & 메인 페이지 컨트롤러 (9편)
·
Spring/Spring Security
로그인 뷰를 보여주고 action을 실행시킬 로그인 컨트롤러와 메인페이지를 보여주게될 메인 컨트롤러를 작성한다. 1. @Controller - 로그인, 메인페이지 컨트롤러 1-1. LoginController 이 코드는 사용자의 로그인 및 로그아웃을 관리하는 컨트롤러이다. Spring의 @Controller 어노테이션을 사용하여 웹 요청을 처리하는 클래스임을 나타낸다. @Slf4j @RequiredArgsConstructor @Controller public class LoginController { /** * [View] 로그인 페이지를 엽니다. */ @GetMapping("/login") public String login() { return "login"; } /** * [Action] 로그인 프로..
Spring Boot 3 & Security 6 시리즈: UserDetailsService, DTO 작성하기 (8편)
·
Spring/Spring Security
이번 포스트에서는 UserDetailsService, DTO 클래스를 작성해 보자 1. CustomUserDetailsService 코드 작성 1-1. 코드 작성하기 이 코드는 Spring Security의 사용자 인증 정보를 관리하는 UserDetailsService 인터페이스를 직접 커스텀해서 구현하여 사용자의 인증 정보를 로드하는 서비스를 정의하는 클래스다. @Slf4j @RequiredArgsConstructor @Service public class CustomUserDetailsService implements UserDetailsService { private final UserRepository userRepository; @Override public UserDetails loadUser..
Spring Boot 3 & Security 6 시리즈: JWT Util 클래스 작성 (7편)
·
Spring/Spring Security
JWT 유틸리티 클래스 작성하기 1. JWT - Util 클래스 작성하기 이 코드는 JWT(JSON Web Token)를 생성하고 검증하는 데 사용되는 TokenUtils 클래스에 대한 것이다. 클래스는 여러 메서드를 포함하고 있으며, JWT의 생성, 유효성 검증 및 관련 정보 추출과 같은 다양한 기능을 수행한다. @Slf4j @Component public class TokenUtils { private static final String jwtSecretKey = "thisIsASecretKeyUsedForJwtTokenGenerationAndItIsLongEnoughToMeetTheRequirementOf256Bits"; // jwtSecretKey를 바이트 배열로 변환하고, 이를 사용하여 HMAC..