본문 바로가기

Java/SpringBoot

(9)
[SpringBoot] OAuth2.0으로 소셜로그인 기능 구현하기(1) - 서비스 등록하기 1) Google Google Cloud Platform에서 서비스 등록하기 Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com Google 로그인 연동하기 - scope의 기본값은 openid, profile, email이다. profile과 email만 등록한 이유는 openid라는 scope가 존재하면 Open ID Provider로 인식하기 때문이다. 이렇게 되면 OpenID Provider인 서비스(google)와 그렇지 않은 서비스(네이버/카카오 등)로 나눠서 각각 OAuth2Service를 만들어야 하므로 하나의 OAuth2Service로 사용하기 위해 open..
[SpringBoot] 그레이들 프로젝트를 스프링부트 프로젝트로 변경하기 인텔리제이에서 Gradle Project를 생성하면 build.gradle에는 자바 개발에 가장 기초적인 코드만 있다. 스프링부 부트 프로젝트에 필요한 설정들을 추가해주자! - 위 코드는 프로젝트의 플러그인 의존성 관리를 위한 설정이다. - ext라는 키워드는 build.gradle에서 사용하는 지역변수를 설정하겠다는 의미이다. springBootVerstion 전역변수를 생성하고 그 값을 초기화하였다. - 'spring-boot-gradle-plugin'라는 스프링 부트 그레이들 플러그인의 2.1.9 RELEASE를 의존성으로 받겠다는 의미이다. - 위 코드는 앞서 선언한 플러그인의 의존성들을 적용할 것인지를 결정하는 코드이다. - io.spring.dependency-management 플러그인은 스..
[SpringBoot] Test(2) MockMvc를 이용해서 테스트하기(@WebMvcTest, @AutoConfigureMockMvc) Mock - Mock이라는 단어를 사전에서 찾아보면 '테스트를 위해 만든 모형'을 의미한다. - 테스트를 위해 실제 객체와 비슷한 모의 객체를 만드는 것을 모킹(Mocking)이라고 하며, 모킹한 객체를 메모리에서 얻어내는 과정을 목업(Mock-up)이라고 한다. - 객체를 테스트하기 위해서는 당연히 테스트 대상 객체가 메모리에 있어야 한다.하지만 생성하는 데 복잡한 절차가 필요하거나 많은 시간이 소요되는 객체는 자주 테스트하기 어렵다. 또는 웹 애플리케이션의 컨트롤러처럼 WAS나 다른 소프트웨어의 도움이 반드시 필요한 객체도 있을 수 있다. 이런 복잡한 객체는 당연히 테스트 과정도 복잡하고 어려울 수 밖에 없다. - 따라서 테스트 하려는 실제 객체와 비슷한 가짜 객체를 만들어서 테스트에 필요한 기능만 ..
[SpringBoot] Test(1) 스프링 부트에서 테스트하기(@SpringBootTest) - 개발자들은 누구나 자신이 작성한 코드에 문제가 없음을 검증하기 위해 어떤 방법으로든 테스트 코드를 작성한다. - 작성된 테스트 코드는 유지보수 과정에서 재사용되어 시스템의 안정성을 보장하는 중요한 장치가 된다. - 대부분의 프로젝트에서는 JUnit을 기반으로 일관성 있는 단위 테스트를 진행하는데, 단위 테스트란 자신이 작성한 클래스에 대한 테스트로써 테스트 단계 중에서 가장 기본이라 할 수 있다. - 단위 테스트가 효율적으로 이루어지기 위해서는 테스트할 객체가 최대한 단순해야 하지만 웹 애플리케이션은 테스트 대상 객체가 특정 서버와 관련되어 있거나 다른 객체들과 연관되어 관계가 복잡한 경우가 일반적이다. - 예로 웹 애플리케이션에서 개발자가 만든 컨트롤러가 정상적으로 동작하는지 확인하기 위해서는 서블..
[SpringBoot] Starter로 의존성 관리하기 - maven project에서는 pom.xml 파일을 통해 프로젝트에 필요한 의존성을 관리할 수 있지만, 예를 들어 프로젝트에 스프링과 JPA를 연동해서 데이터베이스 작업을 처리한다고 가정하면 hibernate-entitymanager.jar 파일을 다운로드하여 클래스 패스에 추가해야 한다. 그러기 위해서는 pom.xml 파일에 하이버네이트 관련된 설정을 가장 먼저 추가해야 한다. - 하지만 문제는 프로젝트에 하이버네이트 관련 의존성만 추가했다고 해서 스프링과 JPA연동을 바로 처리할 수 없다는 것이다. 즉, 스프링과 JPA를 연동하기 위해서는 하이버네이트 말고도 spring-orm.jar나 spring-data-jpa.jar 같은 다른 라이버러리들이 추가적으로 필요하다. 그런데 어떤 라이브러리가 더 ..
[SpringBoot] JPA(Java Persistence) 개념 정리 ORM이란? - ORM이란 용어에도 나와있듯이 객체(Object)와 관계(Relation)을 연결(Mapping)해 주는 개념이다. - 객체와 테이블 시스템(RDBMSs)을 변형 및 연결해주는 작업이라 말 할 수 있다. - ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 대처할 수 있도록 해준다. - ORM을 객체 지향 프로그래밍 관점에서 생각해보면, 관계형 데이터베이스에 제약을 최대한 받지 않으면서, 객체를 클래스로 표현하는 것과 같이 관계형 데이터베이스를 객체처럼 쉽게 표현 또는 사용하자는 것이다. [ORM] ORM이란? ORM을 이용하기 위해서는 Object modeling과 Relational modeling, 두 Modeling의 차이점을 이해해야... blog.naver.com -..
[SpringBoot] Springboot의 자동설정 스프링 MVC를 이용하여 웹 애플리케이션을 개발한다면 간단한 웹 애플리케이션이라도 기본적으로 여러 가지 설정이 필요하지만 스프링부트에서는 자동설정 기능이 동작하면서 수많은 bean들이 자동으로 등록되고 동작한다. - 메인 클래스 위에 선언된 @SpringBootApplication 어노테이션 하나만으로 복잡한 설정들을 대신할 수 있다. - @SpringBootApplication은 다양한 어노테이션을 포함하고 있는데, 중요한 한 어노테이션은 @SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration 3개다. @SpringBootConfiguration -환경설정 bean 클래스를 표현하기 위해 사용했던 @Configuration과 동일하다 @C..
[SpringBoot] SpringBoot의 구조와 실행 구조 src/main/java : 일반적인 자바소스를 등록한다. src/main/resources : 자바 소스가 아닌 XML이나 Property File을 등록한다. src/test/java : JUnit 기반의 Test 케이스를 작성한다. static : HTML 같은 정적인 웹 리소스가 저장된다. templates : 템플릿 기반의 웹 리소스가 저장된다. application.properties : 프로젝트 전체에서 사용할 properties 정보들을 저장한다. - 프로젝트의 pom.xml을 살펴보면 'spring-boot-starter-XXX' 형태의 의존관계 2개가 추가 되어있다. - starter-web은 초기 생성시 starter에서 선택을 하였기 때문에 추가되었고, starter-test는..
[SpringBoot] Spring Framework와 Spring Boot 장점 정리 Framework - 사전적 의미는 '뼈대' 혹은 '구조'이다. - 소프트웨어 관점에서 해석하면, 프레임워크는 애플리케이션의 아키텍처에 해당하는 골격 코드라고 할 수 있다. - 애플리케이션을 개발할 때 가장 중요한 것이 애플리케이션 전체 구조를 결정하는 아키텍처이다. - 아키텍처에 해당하는 코드를 직접 개발하는 것이 아니라 프레임워크로부터 빌려 쓰면, 개발자는 아키텍처와 결합할 비즈니스 로직 개발에만 집중할 수 있게 된다. JAVA 기반의 오픈 소스 프레임워크 처리 영역 프레임워크 설명 Presentation 스트러츠 MVC(Model View Controller) 아키텍처를 제공하는 프레임워크이다. 스프링 (MVC) 스트러츠 같은 MVC 아키텍처를 제공하지만 스트러츠처럼 독립적으로 존재하지 않고 스프링..