Server/Spring Boot
-
Spring Boot에서 많이 사용되는 View 엔진 추천 및 장단점Server/Spring Boot 2025. 4. 29. 23:21
Spring Boot를 사용할 때 프론트엔드를 구성하기 위해 View 엔진을 선택하는 경우가 많습니다. 이 글에서는 대표적인 View 엔진 4가지를 소개하고, 각각의 장단점을 정리해보겠습니다.1. Thymeleaf 설명: Spring 공식에서 권장하는 템플릿 엔진으로 HTML 친화적입니다. 장점: HTML 파일을 그대로 열어도 구조 확인이 쉬움 Spring과의 통합이 매우 뛰어남 (예: Spring EL 지원) 조건문, 반복문 등 표현식이 직관적 단점: 복잡한 로직을 처리하기엔 다소 제약이 있음 렌더링 속도가 JSP보다 느릴 수 있음 2. JSP (JavaServer Pages) 설명: 전통적인 Java 기반 웹 애플리..
-
자주 사용되는 디자인 패턴에 대해 알아보자 (springboot)Server/Spring Boot 2025. 4. 28. 17:44
Spring Boot 개발에서 꼭 알아야 할 디자인 패턴1. 싱글턴 패턴 (Singleton Pattern)싱글턴 패턴은 객체를 하나만 생성하여 모든 클라이언트가 동일한 인스턴스를 공유하도록 하는 패턴입니다. Spring에서는 주로 @Service, @Component, @Repository 등의 어노테이션을 사용하여 빈을 생성할 때 싱글턴을 기본으로 사용합니다.import org.springframework.stereotype.Service;@Servicepublic class SingletonService { private static SingletonService instance; private SingletonService() {} public static SingletonServ..
-
[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) 필요 메모리 공유로 간편 ..