JAVA/Spring(113)
-
[SpringBoot] 스프링부트, mysql 데이터베이스 연결
1. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'mysql:mysql-connector-java' 2. docker container를 사용한 MySQL 추가 우분투 운영체제에 다음과 같은 docker 명령어를 실행하여 mysql 컨테이너를 생성하여 실행시킵니다. $ docker run -p 3306:3306 —name mysql_boot -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=springboot -e MYSQL_USER=yonghwan -e MYSQL_PASSWORD=pass -d mysql mysql_boot 컨테이너에 bash를 실행하여 들어갑니..
2022.12.22 -
[SpringBoot][WebMVC] CORS(Cross-Origin Resource Sharing) 적용
1. SOP와 CORS란 무엇인가? SOP(Same-Origin Policy) 동일 출처 정책(SOP, Same-Origin Policy)은 어떤 Origin에서 가져온 리소스와 상호작용하는 것을 제한하는 보안 방식입니다. 동일 출처 정책은 잠재적으로 해로울 수 있는 문서를 분리함으로써 공격받을 수 있는 경로를 줄여줍니다. CORS(Cross-Origin Resource Sharing) SOP를 우회하기 위한 표준기술입니다. SOP와 CORS 모두 웹 브라우저가 지원하는 기술입니다. SOP는 같은 Origin에만 요청을 보낼 수 있지만 CORS는 서로 다른 Origin끼리 리소스를 공유할 수 있는 기술입니다. 그래서 Cross-Origin 요청을 하기 위해서는 서버의 동의가 필요합니다. 만약 서버가 Cr..
2022.12.15 -
[SpringBoot][WebMVC] Hateoas
HATEOAS(Hypermedia As The Engine Of Application State)란 무엇인가 REST API를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는 것 클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 URL를 응답에 포함시켜 반환하는 것으로 가능하게 할 수도 있음 REST API 정의 웹 애플리케이션이 제공하는 각각의 데이터를 리소스, 즉 자원으로 간주하고 각각의 자원에 고유한 URI(Uniform Resource Identifier)를 할당함으로써 이를 표현하는 API를 정의하기 위한 소프트웨어 아키텍처 스타일입니다. REST API 구현 단계 잘 설계된 REST API의 마지막 단계가 HATEOAS HATEOAS라는 개념을 통해 자원에 호..
2022.12.13 -
[SpringBoot] Spring Security #2 OAuth2
1. Client 만약 클래스패스에 spring-security-oauth2-client 프로퍼티가 설정되어 있다면, OAuth2/Open ID 클라이언트 연결에 자동 설정에 대한 이점을 가질 수 있습니다. 이 설정은 OAuth2ClientProperties 아래의 속성을 사용합니다. 서블릿 및 리액티브 애플리케이션 모두에 동일한 속성이 적용됩니다. spring.security.oauth2.client 접두어하에 여러개의 OAuth2 client와 provider를 등록할 수 있습니다. 다음 예제와 같이 등록할 수 있습니다. spring: security: oauth2: client: registration: my-client-1: client-id: "abcd" client-secret: "passwo..
2022.11.20 -
[SpringBoot] Spring Security #1 MVC, WebFlux Security
Spring Security 만약 Spring Security가 classpath에 있다면, 웹 애플리케이션들은 기본적으로 보호됩니다. Spring Boot는 Spring Security의 content-negotiation strategy에 의존하여 httpBasic을 사용할지 아니면 formLogin을 사용할지 결정합니다. content-negotiation stragegy : user agent(사용자를 대표하는 컴퓨터 프로그램, 웹 맥락에선 브라우저를 의미함)가 어떤 URI에 있는 리소스를 요청할때, 해당 리소스가 사용자에게 적절한 형태(예를 들어 컨텐츠를 한글로 보여줄지, 영어로 보여줄지)로 받도록 정하게 해주는 방법 httpBasic : Http Basic 인증, Http 프로토콜에서 정의한 ..
2022.11.20 -
[SrpingBoot] RestAPI에 대한 에러 핸들링
1. 개요 해당 글은 Spring REST API에 대한 예외 핸들링을 구현하는 방법에 대해서 소개합니다. 스프링 3.2 이전에 Spring MVC 애플리케이션의 에러 핸들링하는 두가지 방법은 다음과 같습니다. HandlerExceptionResolver @ExceptionHandler 스프링 3.2 이후에는 @ControllerAdvice 애노테이션을 사용하여 위 두가지 방법의 단점을 해결하고 전체 애플리케이션의 예외 처리를 하고 있습니다. 스프링 5에서는 ResponseStatusException 클래스를 소개합니다. 이것은 REST API에서 기본적인 에러를 다루는 가장 빠른 방법의 클래스입니다. 2. Solution1, 컨트롤러 레벨에서 @ExceptionHandler 사용하기 첫번째 솔루션은 @..
2022.11.18