[SpringBoot] Lombok 사용 시 부모 생성자 호출 문제와 해결 방안
·
Dev Framework/Spring
Lombok과 상속: 부모 생성자 호출의 제약사항Lombok은 Java에서 보일러플레이트 코드를 줄여주는 유용한 라이브러리입니다. Lombok을 사용하면, 간단한 어노테이션으로 getter, setter, 생성자 등을 자동으로 생성할 수 있습니다. 그러나 Lombok을 사용할 때, 특히 상속 관계에서 부모 클래스의 생성자를 호출하는 데 몇 가지 제약이 따릅니다. 이 글에서는 이러한 제약 사항과 그 이유에 대해 설명하겠습니다.Lombok의 생성자 어노테이션먼저 Lombok의 주요 생성자 어노테이션에 대해 간단히 살펴보겠습니다.@AllArgsConstructor: 모든 필드를 인자로 받는 생성자를 생성합니다.@NoArgsConstructor: 인자가 없는 기본 생성자를 생성합니다.@RequiredArgsCo..
[Spring Security] 02. Http Basic이 아닌 OAuth2를 사용하는 이유
·
Dev Framework/Spring
HTTP Basic 인증 방식의 주요 취약점 중 하나는 클라이언트가 서버에 요청을 할 때마다 사용자의 자격증명(사용자 이름과 비밀번호)을 인코딩된 형태로 전송해야 한다는 것입니다. 이 방식은 사용자의 자격증명을 매 요청마다 Authorization 헤더에 포함시켜 전송합니다. HTTP Basic 인증은 인증 정보를 Base64 형식으로 인코딩하여 전송하지만, 이는 암호화 방식이 아니라 단순 인코딩에 불과하기 때문에, 인증 정보가 인터넷을 통해 전송될 때 쉽게 노출될 수 있습니다. HTTP Basic 인증의 취약점 평문 전송 위험: Base64 인코딩은 단순한 인코딩 방식이므로, 네트워크 스니핑을 통해 쉽게 디코딩되어 자격 증명 정보가 노출될 수 있습니다. 이는 특히 암호화되지 않은 HTTP 연결에서 문제..
[Spring Security] 01. Spring Security에 대해서
·
Dev Framework/Spring
Spring Security: 스프링 애플리케이션의 보안 강화 Spring Security는 Java 기반의 애플리케이션, 특히 Spring 기반의 애플리케이션에 보안 기능을 추가하는데 사용되는 강력한 인증 및 권한 부여 프레임워크입니다. 웹 보안 및 엔터프라이즈 애플리케이션의 보안을 위해 설계된 이 프레임워크는 스프링 애플리케이션의 보안을 적용하는 과정을 크게 간소화합니다. 주요 기능 Spring Security는 다음과 같은 다양한 보안 기능을 제공합니다: 인증(Authentication): 다양한 인증 메커니즘 지원 (폼 기반 로그인, LDAP, JWT, OAuth2 등). 권한 부여(Authorization): 인증된 사용자의 자원 접근 권한 결정. 보안 헤더(Secure Headers): HTT..
[Spring] @Controller 와 @RestController의 차이
·
Dev Framework/Spring
Spring Framework에서 @RestController와 @Controller 애너테이션은 컨트롤러의 역할을 정의하는 데 사용되지만, 주로 사용되는 목적과 방식에 차이가 있습니다. 이 두 애너테이션의 주요 차이점은 다음과 같습니다: @Controller MVC 컨트롤러: @Controller 애너테이션은 Spring MVC의 컨트롤러로 사용됩니다. 이 컨트롤러는 주로 웹 애플리케이션에서 HTML 페이지를 렌더링하는 데 사용됩니다. 뷰 반환: 메소드가 반환하는 값은 보통 뷰 이름입니다. Spring은 이 뷰 이름을 사용해서 정의된 뷰 리졸버(view resolver)를 통해 해당하는 뷰를 찾고, 모델 데이터를 뷰로 전달한 후 클라이언트에게 HTML 형태로 렌더링합니다. ResponseBody 사용:..
[Spring]Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed 해결 방법
·
Dev Framework/Spring
UnableToConnectException: Public Key Retrieval is not allowed오류는 MySQL에 연결할 때 발생하는 보안 관련 오류입니다. 이 오류는 MySQL 서버가 클라이언트에게 RSA 공개 키를 전송하는 방식으로 비밀번호를 인증하려고 할 때, 클라이언트(여기서는 Spring Boot 애플리케이션)가 이러한 방식의 인증을 허용하지 않을 때 발생합니다. 문제 해결 방법: 이 문제를 해결하는 가장 간단한 방법은 application.properties 파일에 있는 데이터베이스 연결 URL에 allowPublicKeyRetrieval=true 설정을 추가하는 것입니다. 그러나 보안상의 이유로, 이 옵션을 사용할 때는 useSSL=false 옵션과 함께 사용하지 않도록 주의해..
[Spring][완독] 스프링 부트3 자바 백엔드 개발 입문 - 출판사 길벗
·
Dev Framework/Spring
2024.02.11 - 2024.03.02 완독 깃허브 예제 코드 클론 코딩: https://github.com/glaxyt/SpringBootPractice
[Spring] REST API에 대해서
·
Dev Framework/Spring
REST API(Representational State Transfer Application Programming Interface)는 웹 서비스 간 통신을 위한 경량의 인터페이스입니다. 이는 자원(데이터 또는 서비스)의 상태를 전달하기 위해 HTTP 프로토콜을 사용합니다. REST는 웹의 기본 프로토콜인 HTTP를 효과적으로 활용하여 애플리케이션 간의 상호작용을 간소화하며, 이를 통해 웹 서비스 API를 구현하는 데 널리 채택되고 있습니다. REST의 핵심 개념 자원(Resource): REST에서 자원은 웹에서의 모든 것을 의미하며, URI(Uniform Resource Identifier)를 통해 구체적인 자원을 식별합니다. 표현(Representation): 클라이언트가 서버로부터 자원의 상태(..
[Spring][MAC] Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' 해결 방법
·
Dev Framework/Spring
오늘 lombok(롬복)을 사용하여 코드 간소화를 하기 위해 @ToString, @AllArgsConstructor 어노테이션을 사용하였으나, 다음과 같은 오류가 발생하였다. 이는 프로젝트에서 사용하고 있는 JDK가 21버전 이상이기에 발생하는 오류인데 JDK를 17로 수정해주면 해결된다. 이 글은 Mac 기준으로 작성되었으니 참고바란다. 오류 발생 오류 해결방법 1. File -> Project Structure 이동 2. SDK가 현재 JDK21 버전으로 설정되어있다. SDK를 JDK 17버전으로 수정해주자. 2-1 만일 JDK 17버전이 존재하지 않는다면 JDK17 버전을 다운로드 한 뒤 적용을 해주면 해결이 된다. 3. 성공적으로 실행이 된다.
개발자 성현
'Dev Framework/Spring' 카테고리의 글 목록