Java/Spring(42)
-
[Spring] 악명 높은 CORS 개념 & 해결법 - 정리 끝판왕
Spring 세팅java// 스프링 서버 전역적으로 CORS 설정@Configurationpublic class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:8080", "http://localhost:8081") // 허용할 출처 .allowedMethods("GET", "POST") // 허용할 HTTP method .allowCredentials(true) // 쿠키 인증 요청 ..
2024.07.12 -
[Spring] 컨트롤러 Dto, MultipartFile 동시 요청
문제 상황게시글에 이미지를 첨부하여 작성하는 기능을 구현하고자 Controller에서 @RequestBody로 Dto를 받고, @RequestPart로 이미지 파일을 받고자 하는 상황이었다. Postman에서 해당 API를 테스트하는데 다음과 같은 오류가 발생하였다.org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported해결책이 경우, dto와 file 모두 @RequestPart로 받고, 해당 애노테이션에서 value값을 정확하게 지정해야 한다.애노테이션 value값을 지정하지 않았을 경우 컨트롤러가 다음과 같이 읽지 못하는 경우가 발생한다.Required ..
2024.05.19 -
[Spring] oAuth 2.0 소셜로그인 구현
보호되어 있는 글입니다.
2024.03.29 -
[Spring] 13장: 서비스의 인증과 권한 부여
애플리케이션에 대한 인증과 보안관련 용어 정리 13.1 보안용어 이해 - 스프링 시큐리티를 활용하려면 먼저 보안과 관련된 용어를 정리해야됨 13.1.1 인증 - 누구인지 확인하는 단계 13.1.2 인가 - 접근할 권리가 있는지 확인하는과정 13.1.3 접근주체 - 애플리케이션의 기능을 사용하는 주체 13.2 스프링 시큐리티 - 어플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위프로젝트 13.3 스프링 시큐리티의 동작 구조 보안필터 체인에서 사용하는 필터 목록 13.4 JWT - JWT( JSON Web Token)는 웹 응용 프로그램에서 정보를 안전하게 전송하기 위한 컴팩트하고 자체 포함된 방법입니다. 주로 웹 애플리케이션에서 사용되며, 특히 인증 및 권한 부여에 유용합니다. JWT는 세 ..
2024.03.16 -
[Spring] Spring의 다양한 라이브러리
- 스프링 데이터 (Spring Data): 스프링 데이터는 스프링 프레임워크와 데이터 액세스 기술을 통합하는 프로젝트입니다. 스프링 데이터를 사용하면 데이터베이스와의 상호작용을 간단하게 만들 수 있으며, JPA, Hibernate, MongoDB, Redis 등 다양한 데이터베이스 기술과 통합이 가능합니다. 스프링 데이터는 개발자가 데이터 액세스 계층을 더 쉽게 구축하고 관리할 수 있도록 돕는 라이브러리입니다. - 세션 (Session): 웹 애플리케이션에서 세션은 클라이언트와 서버 간의 연결 상태를 유지하기 위한 메커니즘입니다. 세션은 사용자의 상태 정보를 서버에 유지하고 관리하는 데 사용됩니다. 예를 들어, 로그인 상태, 장바구니 내역, 인증 정보 등을 세션을 통해 유지할 수 있습니다. - 배치 (..
2024.03.14 -
[Spring] JPA Lazy 로딩 Jackson Serialize 에러 - No serializer found for class
[궁금한점들] 1. (fetch = FetchType.EAGER) 이부분을 직접 설정안해주면 디폴트은? JPA에서 FetchType의 기본값은 FetchType.LAZY입니다. FetchType.LAZY는 연관된 엔티티를 사용할 때 해당 엔티티에 대한 데이터베이스 조회가 필요할 때까지 데이터를 가져오지 않는 것을 의미합니다. 따라서 FetchType을 따로 설정하지 않을 경우, 기본적으로 모든 연관 엔티티는 LAZY로 설정됩니다. 반면에 FetchType.EAGER는 연관된 엔티티를 즉시 로드하도록 강제하는 옵션입니다. 연관된 엔티티를 로딩하는 SQL 쿼리는 부모 엔티티를 가져올 때 함께 실행됩니다. 이는 부모 엔티티를 사용할 때 연관된 엔티티의 데이터를 즉시 사용해야 할 때 유용합니다. 그러나 EAGE..
2024.03.11