Spring/Boot(7)
-
[Spring Boot] 자동 구성에 의한 H2 Default URL 변경
스프링 개발자라면 대부분 로컬 환경에서 인메모리 DB로 H2로 테스트를 많이 한다. H2는 따로 설정하지 않으면 기본 설정은 다음과 같다. driver: org.h2.Driver url - jdbc:h2:mem:testdb username: sa password: 라고 알고 있었는데 기본 url로 접속이 안 되는 현상을 발견했다. 왜 이런가 생각하면서 혹시 스프링부트가 기본적으로 설정을 따로 해주는가 하고 처음 서버 구동 시 나오는 로그를 살펴봤는데 여기서 해답을 찾을 수 있었다. 스프링부트 자동 설정 구성에서 H2의 기본 URL을 바꿔버렸다. 참고로 테스트하던 스프링 부트 버전은 2.7.9 이다. url을 변경하고 다시 연결 테스트를 해보면 성공한다. application.yml에서 별다른 설정을 하지..
2023.03.19 -
[Spring] FactoryBean
접하게 된 계기 강의를 듣던 중 강사님께서 DB에서 값을 받아오기 위한 빈을 FactoryBean을 구현해서 만드는 것을 보게 되었다. 평소에 @Component나 @Configuration, @Bean을 통해서 빈을 생성했는데 이렇게 만드는 방법도 있다는 것을 보게 되었다. 스프링의 빈 등록 스프링은 지정된 클래스 이름을 가지고 Reflection API를 이용해서 빈을 생성한다. 내부적으로 빈 정의에 나오는 클래스 이름을 가지고 빈을 생성한다. 문제 스프링에서 DI할 수 없는 클래스의 빈이 있을 수 있다. 예를 들어 클래스 정보를 미리 알아낼 수 없는 경우이다. Java에서는 Dynamic Proxy로 만드는 객체의 경우 클래스가 무엇인지 미리 알 수 없다. 클래스 자체도 내부적으로 새로 정의해서 사..
2023.03.15 -
[Spring Boot] @RequestParam vs @RequestPart
조사하게 된 원인 프로젝트를 하면서 Multipart 데이터로 JSON과 이미지 파일 데이터를 함께 받기 위해 스프링 기능을 찾던 도중 @RequestPart에 대해 새로 알게 되었다. @RequestParam이라는 어노테이션도 있는데 둘의 차이에 대해 조사해 보았다. 이는 공식 문서에 잘 나타나 있다. 먼저 각 어노테이션에 대한 공식 문서의 설명을 보자. @RequestParam Annotation which indicates that a method parameter should be bound to a web request parameter. Supported for annotated handler methods in Spring MVC as follows: In Spring MVC, "reques..
2022.03.08 -
[Spring Boot] Spring OAuth 없이 Spring Boot로 Github OAuth 사용하기[2/2]
이전 글에 이어서 본격적으로 OAuth 기능을 구현해보자. 먼저 Github OAuth Api를 확인하자. https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps Authorizing OAuth Apps - GitHub Docs GitHub's OAuth implementation supports the standard authorization code grant type and the OAuth 2.0 Device Authorization Grant for apps that don't have access to a web browser. If you want to skip authorizing your a..
2021.11.22 -
[Spring Boot] Spring OAuth 없이 Spring Boot로 Github OAuth 사용하기[1/2]
스프링 부트 기반으로 Oauth를 다루려고 검색해보면 거의 대부분 Spring OAuth 모듈을 사용해서 해결하는 것 같다. 이번 글에서는 OAuth 라이브러리 없이 직접 Github OAuth를 활용해 Github API에 접근하는 글을 작성하도록 하겠다. 사전 준비 사항 깃허브 아이디 스프링 부트 기반 컨트롤러 매핑 지식 HTTP Oauth 기초 지식 OAuth 간단 정리 OAuth가 뭔지 간단하게 정리하고 가자. OAuth는 서비스 제공자가 직접 사용자의 정보를 관리하지 않고 외부 사이트에 존재하는 사용자의 정보에 대해 서비스 제공자에게 권한을 부여하는 개방형 표준이다. 우리가 평소에 회원가입을 통해 이름, 아이디, 비밀번호 등을 직접 입력하는 방식은 서비스 제공자가 정보를 관리하게 된다. OAut..
2021.11.22 -
2. IOC와 DI
앞서 살펴봤듯이 기본적인 다형성으로는 OCP와 DIP를 충분히 지킬 수 없었다. 이는 DI를 통해 해결할 수 있다. 1. 도메인 설계 휴대폰 매장을 오픈한다고 가정해보자. 클라이언트는 통신사에 해당하는 휴대폰을 개통할 수 있을 것이다.사장님은 SKT, KT, LG U+ 중에 어떤 매장으로 오픈할지 정하지 못하셨다. 일단은 KT로 생각 중이라고 하신다. 그렇다고 손만 빨고 있을 수는 없다. 다형성을 이용해 미리 개발해놓도록 하자. 이를 역할과 구현을 분리하여 클래스 다이어그램으로 표현하면 다음과 같다. 이를 간단하게 코드로 구현해보자. public interface MemberService { void open(); } public class MemberServiceImpl implements Member..
2021.11.22