Server/Spring Boot
-
[Springboot] 인증(Authentication)과 인가(Authorization) 구분하기!Server/Spring Boot 2025. 4. 21. 17:42
✅ 인증(Authentication)과 인가(Authorization)의 차이📌 비유로 쉽게 이해하기회사 건물에 출입하는 상황을 떠올려 봅시다. 인증(Authentication): 당신이 누구인지 확인하는 것 👉 출입문에서 사원증을 찍고 "나는 홍길동입니다" 라고 밝히는 단계입니다. 즉, 아이디와 비밀번호로 본인을 증명하는 것입니다. 인가(Authorization): 당신이 무엇을 할 수 있는지 확인하는 것 👉 사원증을 찍었더니 5층까지는 출입 가능, 9층은 출입 불가라고 나옵니다. 즉, 인증된 사용자가 어떤 권한(Role)을 가지고 있는지에 따라 접근 제한됩니다. 🛠 Spring Boot에서 로그인과 토큰을 활용한 인증/인가 구현📍 사용 기술 Spring Boo..
-
[Springboot] SQL Injection 이란? 해결 방안은?Server/Spring Boot 2025. 4. 21. 17:28
🔐 SQL Injection이란?SQL Injection은 사용자의 입력값이 검증 없이 SQL 쿼리에 포함될 때 발생합니다...💥 SQL Injection 발생 예제 (Spring Boot)// 취약한 코드 예시@RestController@RequiredArgsConstructorpublic class UserController { private final JdbcTemplate jdbcTemplate; @GetMapping("/user") public String getUser(@RequestParam String username) { String sql = "SELECT * FROM users WHERE username = '" + username + "'"; ..
-
[Springboot] 통합 테스트 코드 작성해보기 (Controller)Server/Spring Boot 2025. 4. 21. 15:48
Spring Boot Controller 통합 테스트 (JUnit 5 + MockMvc)이번에는 UserService를 사용하는 UserController에 대한 통합 테스트 예제를 알아봅니다.Spring Boot의 @SpringBootTest와 MockMvc를 활용하여 실제 HTTP 요청/응답 시나리오를 검증할 수 있습니다.1. 컨트롤러 클래스 (UserController.java)@RestController@RequestMapping("/users")public class UserController { private final UserService userService; public UserController(UserService userService) { this.userSe..
-
[Springboot] 단위 테스트 코드 작성해보기 (Service, Dao, Repository)Server/Spring Boot 2025. 4. 21. 15:45
Spring Boot에서 JUnit 5로 Service, Repository, DAO 단위 테스트하기1. 엔티티 클래스 (User.java)@Entitypublic class User { @Id @GeneratedValue private Long id; private String name; private String email; // getters, setters, constructors}2. Repository 인터페이스 (UserRepository.java)public interface UserRepository extends JpaRepository { Optional findByEmail(String email);}3. DAO 클래스 (UserDao.java)@Re..
-
[Springboot] 테스트도구 JUnit5 에 대해 알아보자!Server/Spring Boot 2025. 4. 21. 15:20
Spring Boot에서 테스트 자동화를 위해 JUnit 5를 써야 하는 이유Spring Boot 프로젝트를 진행하다 보면, 테스트 자동화는 유지 보수성과 안정성을 확보하는 데 있어 필수적인 요소입니다.그중에서도 가장 핵심적인 테스트 프레임워크가 바로 JUnit입니다. 기존에는 JUnit 4를 많이 사용했지만, 이제는 JUnit 5가 표준으로 자리 잡고 있습니다. 그렇다면, 왜 JUnit 5를 써야 할까요?아래에서 그 이유를 하나씩 알아보겠습니다.1. JUnit 5는 완전히 새로 설계된 테스트 플랫폼JUnit 5는 단순히 JUnit 4의 업그레이드가 아닌, 완전히 새로운 테스트 플랫폼입니다. 아키텍처부터 API까지 모던 자바(자바 8 이상)의 기능을 적극 반영하여 설계되었기 때문에, 람다식, 메서드 레퍼..
-
[Springboot] 스레드와 프로세스를 구분해보자!Server/Spring Boot 2025. 4. 18. 17:06
✅ 스레드와 프로세스의 차이점프로세스(Process)는 실행 중인 프로그램으로, 운영체제로부터 독립적인 메모리 공간(코드, 데이터, 힙, 스택)을 할당받아 실행됩니다.스레드(Thread)는 프로세스 내에서 실행되는 작업의 최소 단위이며, 하나의 프로세스는 여러 개의 스레드를 가질 수 있습니다. 구분 프로세스 스레드 정의 실행 중인 프로그램 프로세스 내에서 실행되는 작업의 흐름 메모리 공간 독립적 공유 (코드, 힙 등은 공유하고, 스택은 별도) 통신 방법 IPC(Inter-Process Communication) 필요 메모리 공유로 간편 ..
-
💡 Java Spring에서 자주 사용하는 ObjectMapperServer/Spring Boot 2025. 4. 17. 14:11
Java로 웹 개발을 하다 보면 객체(Object)와 JSON 사이를 변환해야 하는 일이 굉장히 많습니다. 이때 유용하게 쓰이는 라이브러리가 바로 ObjectMapper입니다. 특히 Spring에서는 이 ObjectMapper를 이용해서 직렬화(Serialize)와 역직렬화(Deserialize)를 아주 손쉽게 처리할 수 있죠.이번 포스팅에서는 ObjectMapper의 기본 사용법부터 실무에서 자주 쓰는 옵션들, 그리고 실전 예제까지 깔끔하게 정리해드릴게요!📦 ObjectMapper란?ObjectMapper는 Jackson 라이브러리에서 제공하는 클래스입니다. JSON 데이터를 Java 객체로 변환하거나, Java 객체를 JSON 문자열로 변환할 때 사용합니다.Spring Boot에서는 기본적으로 Ja..
-
MapStruct 의 다양한 사용에 대해 알아보자Server/Spring Boot 2025. 4. 16. 13:08
🚀 MapStruct 고급 매핑 예제이번엔 MapStruct를 좀 더 깊이 있게 사용하는 예제들을 소개합니다.List 매핑, @AfterMapping, @Named, @InheritInverseConfiguration 등 실제 프로젝트에서도 매우 유용한 기능들이에요.1️⃣ List 매핑컬렉션 타입도 자동 매핑 가능합니다.// 단일 DTO 매핑 메서드UserDto toDto(User user);// 리스트 매핑List toDtoList(List users);단, 단일 객체 매핑 메서드가 정의되어 있어야 리스트 매핑도 동작합니다.---2️⃣ @AfterMapping - 매핑 후 추가 작업 처리매핑이 완료된 후 후처리를 하고 싶을 경우 @AfterMapping을 사용합니다.@Mapper(componentMo..