250305 TIL
·
TIL
Spring Security 세션 관리 설정.sessionManagement(session -> session .maximumSessions(1) // 동시 접속 허용 개수 1개 .maxSessionsPreventsLogin(false) // 이전 로그인 유지 여부)▪️maximumSessions(N)▫️한 사용자가 동시에 로그인할 수 있는 세션 개수를 N개로 제한▫️같은 계정으로 여러 개의 브라우저에서 로그인하려고 하면, 이전 로그인 세션이 끊길 수 있음▪️maxSessionsPreventsLogin(true/false)▫️false → 나중에 로그인한 사람이 접속 가능, 먼저 로그인한 사람은 자동 로그아웃됨.▫️true → 먼저 로그인한 사람이 계속 유지, 나중에 로그인한 사람은 차단됨.C..
250304 TIL
·
TIL
@Configuration @EnableWebSecurity @RequiredArgsConstructor public class SecurityEx4Config { private final CustomUserDetailsService customUserDetailService; // DB에서 사용자 정보를 조회하는 서비스 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // CSRF(Cross-Site Request Forgery) 보안 비활성화 (테스트 용도로 설정) .csrf(httpSecurity..
250228 TIL
·
TIL
Spring SecuritySpring Security는 요청을 가로채서 필터를 통과하게 한다 ▪️build.gradle 파일implementation 'org.springframework.boot:spring-boot-starter-security'Spring Security 의존성 추가의존성만 추가하고 아무 설정을 안 했을 때 아래처럼 설정한 것처럼 동작 한다@Configuration@EnableWebSecurity@Slf4jpublic class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { //기본 설정 -- 스프링 시큐리티만 그..
250227 TIL
·
TIL
서블릿 컨텍스트 & 쓰레드 풀클라이언트(브라우저, 앱 등)가 요청을 보내면, 서블릿 컨테이너(톰캣, Jetty 등)가 이를 처리.요청을 처리하려면 쓰레드가 필요한데, 요청이 올 때마다 새 쓰레드를 만들면 성능 부담(비용)이 크기 때문에, 미리 여러 개의 쓰레드를 만들어두고 재사용하는 방식(쓰레드 풀)을 사용.즉, “요청 하나당 쓰레드 하나"가 배정되지만, 이 쓰레드는 매번 새로 생성되지 않고 쓰레드 풀에서 가져와 사용.✅ 요청이 끝나면 쓰레드는 풀에 반환되고, 다음 요청이 다시 해당 쓰레드를 재사용할 수 있음.➕비동기 요청 처리를 지원기본 쓰레드 수Tomcat의 기본 쓰레드 관련 설정설정값 기본값 설명maxThreads200요청을 처리할 수 있는 최대 쓰레드 개수minSpareThreads10최초 생성되..
250226 TIL
·
TIL
double > Double 차이점둘 다 실수 값을 저장하지만,double ▶️ 기본형 (primitive type)▫️기본 값 : 0.0 ▫️Stack 메모리에 저장Double▶️ 참조형 (Wrapper class) 주소를 가지고 있는 객체임 ▫️ 기본 값 : null (객체이므로 Null 값 할당 가능) ▫️ Double 클래스의 메서드 사용 가능 (parseDouble, toString 등) ▫️ Heap 메모리에 저장 (객체이므로)// 기본형 doubledouble a = 10.5;// 객체형 DoubleDouble b = 20.5; // 자동 박싱 (Auto-boxing)double c = b; // 자동 언박싱 (Auto-unboxing)System.out.println(b.toStr..
250225 TIL
·
TIL
예외 처리와 에러 핸들링실행 중 예외가 일어났을 때 각각 예외를 받아 처리 해주는 컨트롤러 설정 @ControllerAdvice▪️@Controller가 붙은 일반 컨트롤러 (@RestController 포함) 을 대상으로 사용 ▪️ 뷰와 데이터 모두 응답 가능@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(IllegalArgumentException.class) public String handleIllegalArgumentException(IllegalArgumentException ex, Model model) { model.addAttribute("errorMessage", ex.getMess..
250224 TIL
·
TIL
HttpMessageConverter Spring Framework에서 HTTP 요청 및 응답 데이터를 변환하는 인터페이스Spring MVC에서 @RequestBody와 @ResponseBody 또는 RestController를 사용할 때, HTTP 요청과 응답을 자동으로 변환✅ 요청(Request) 처리클라이언트 → 서버 요청(Request)HTTP 요청 본문(body)을 특정 객체로 변환예: JSON 데이터를 User 객체로 변환클라이언트가 application/json 타입의 HTTP 요청을 보냄.HttpMessageConverter가 JSON 데이터를 Java 객체로 변환.변환된 객체가 컨트롤러의 매개변수(@RequestBody)로 전달됨.✅ 응답(Response) 처리서버 → 클라이언트 응답(R..
250221 TIL
·
TIL
JOIN두 개 이상의 테이블을 연결하여 데이터를 가져오는 SQL 연산JOIN 종류설명INNER JOIN두 테이블에서 일치하는 데이터만 반환LEFT JOIN (또는 LEFT OUTER JOIN)왼쪽 테이블의 모든 데이터 + 일치하는 오른쪽 테이블 데이터 반환 (오른쪽에 데이터가 없으면 NULL)RIGHT JOIN (또는 RIGHT OUTER JOIN)오른쪽 테이블의 모든 데이터 + 일치하는 왼쪽 테이블 데이터 반환 (왼쪽에 데이터가 없으면 NULL)FULL JOIN (또는 FULL OUTER JOIN)두 테이블에서 모든 데이터 반환 (일치하지 않는 데이터는 NULL)CROSS JOIN두 테이블의 모든 조합을 반환 (Cartesian Product)SELF JOIN같은 테이블을 JOIN하여 데이터 비교1️⃣..
250220 TIL
·
TIL
Criteria API▪️JPA에서 동적 SQL을 안전하게 작성할 수 있도록 도와주는 API▪️jpql과 네이티브 쿼리는 문자열로 작성하므로 컴파일 타임에 오류를 체크해주지 않음▪️자바 코드 기반으로 쿼리를 구성하기 때문에 컴파일 타임에 오류를 잡을 수 있고, IDE의 자동완성 기능을 활용할 수 있는 장점이 있다Criteria API 구성 요소CriteriaBuilder (쿼리 생성 도구)▪️Criteria API 쿼리를 만들기 위한 팩토리 객체▪️이 객체를 통해 쿼리를 생성하고 조건을 추가할 수 있다▪️쿼리의 기본 제작 도구CriteriaBuilder cb = entityManager.getCriteriaBuilder();CriteriaQuery (쿼리 정의)▪️실제 SQL 쿼리를 나타내는 객체로, C..
250219 TIL
·
TIL
Spring Data JPASpring Framework에서 JPA를 더욱 쉽게 사용할 수 있도록 도와주는 라이브러리Spring Data JPA의 특징1️⃣자동 구현 ▪️Spring Data JPA에서는 기본적인 CRUD 작업을 자동으로 해줌.▪️CrudRepository나 JpaRepository 인터페이스를 상속받은 리포지토리 인터페이스를 정의하면, Spring Data JPA가 이를 기반으로 자동으로 구현해준다.public interface UserRepository extends JpaRepository { // 기본적인 CRUD 메서드는 자동으로 구현.} 2️⃣쿼리 메서드 ▪️Spring Data JPA는 쿼리 메서드를 자동으로 생성해준다.▪️findByUsername(String user..