위의 이미지처럼 Gradle -> Tasks -> verification -> test를 클릭하면 전체 테스트를 수행할 수 있다. 시큐리티 적용으로 인하여 인증된 사용자만이 API를 호출할 수 있게 변경되었기 때문에, 모든 테스트가 통과하지 못하고 있다. No qualifying bean of type~ 메시지를 발견할 수 있는데, 소셜 로그인 관련 설정값이 없기 때문에 발생한다. src/main 환경과 src/test 환경은 각자의 환경 구성을 가진다. test에 application.properties가 없으면 main의 설정을 그래도 가져오지만, application-oauth.properties는 가져오지 않는다. 이를 해결하기 위해서 test를 위해서 가짜 설정값으로 application.pro..
전체코드 https://github.com/sdardew/springboot-board GitHub - sdardew/springboot-board: SpringBoot를 사용하여 구현한 게시판 SpringBoot를 사용하여 구현한 게시판. Contribute to sdardew/springboot-board development by creating an account on GitHub. github.com 1. NAVER Developer의 오픈 API에 접속한다 https://developers.naver.com/apps/#/register?api=nvlogin 애플리케이션 - NAVER Developers developers.naver.com 이때 계정 정보 등록을 해야한다. https://dev..
로그인을 한 후 애플리케이션을 재실행하면 로그아웃이 되어있다. 그 이유는 세션이 내장 톰캣의 메모리에 저장되기 때문이다. 세션은 WAS의 메모리에 저장되고 호출되기 때문에, 실행 시 항상 초기화가 된다. 서버가 한 개가 아니라 다수의 서버를 사옹하는 경우 세션 동기화 설정을 해야 한다. 세션 저장소는 다음 3가지 방식 중 하나로 선택된다. 1) WAS 세션 사용 다른 설정이 없으면 기본으로 사용되는 방식 WAS에 저장이 되기 때문에 다수의 WAS를 사용하는 경우 세션 공유 설정이 필요 2) 데이터베이스 사용 ⇐ 사용할 방식 여러 WAS 간 공용 세션 사용 가능 많은 설정이 필요 없음 요청마다 BD IO가 발생하여 성능상 이슈가 발생할 수 있음 로그인 요청이 많이 없는 경우에 사용 3) Redis, Mem..
자세한 코드: Github 구글, Github, 네이버 등과 같은 소셜 로그인 기능을 사용하는 경우를 발견할 수 있다. 로그인 기능을 직접 구현하면 다음과 같은 기능이 필요하다. 로그인 시 보안 회원가입 시 본인 인증 비밀번호 찾기 비밀번호 변경 회원정보 변경 OAuth 로그인을 사용하면 위의 기능들을 직접구현 하는 것을 대체할 수 있다는 장점이 있다. Google Cloud Platfrom 설정 Google Cloud Platform에 접속하여 상단 바에 있는 프로젝트 선택 탭을 클릭한다. 오른쪽 위의 새 프로젝트를 클릭한다. 프로젝트 이름을 입력하고 프로젝트를 만든다. 상단바에 왼쪽에 메뉴에 들어가서 API 및 서비스 메뉴로 이동한다. 사용자 인증 정보 메뉴에 들어간 다음, [+ 사용자 인증 정보 만..
Entity에는 데이터의 생성 시간과 수정 시간이 포함된다. 이 생성 시간과 수정 시간은 유지보수에 중요한 정보로 사용된다. 그렇기 때문에 DB에 삽입, 갱신 전 날짜 데이터를 등록/수정하는 코드가 여러 곳에 들어간다. 이런 코드가 여러 곳에 추가하는 일은 귀찮기도 하고 코드가 지저분해진다. 따라서 위와 같은 문제를 해결하기 위해서 JPA Auditing을 사용한다. Java의 날짜와 시간 API를 보면 java 8 전후로 날짜와 시간 관련한 내용을 볼 수 있다. import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDat..
API를 만들기 위해서 필요한 3개의 클래스 Dto: Request 데이터를 받음 Controller: API 요청을 받음 Service: 트랜잭션, 도메인 기능 간의 순서를 보장 💡 Service에서 비즈니스 로직을 처리하는 것이 아니다. Service는 트랜잭션, 도메인 간 순서 보장의 역할만 한다. Web Layer 컨트롤러(@Controller)와 JSP/Freemaker 등의 뷰 템플릿 영역 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역 Service Layer @Service에 사용되는 서비스 영역 일반적으로 Controller와 Dao의 중간 영역에서 사용 @Transactional이 사용되어야 하는 영역 R..
템플릿 엔진 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어 서버 템플릿 엔진과 클라이언트 템플릿 엔진 서버 템플릿 엔진은 서버에서 구동된다. 서버 템플릿 엔진을 이용한 화면 생성 방식은 다음과 같다. 서버에서 Java 코드로 문자열을 만듦 문자열을 HTML로 변환 HTML을 브라우저로 전달 자바스크립트 코드는 브라우저 위에서 작동한다. 따라서 React.js나 Vue.js가 포함되는 클라이언트 템플릿은 브라우저에서 화면을 생성한다. 브라우저 위에서 작동을 하기 서버 템플릿이 제어할 수가 없다. 💡 SPA (Single Page Application) 서버로부터 완전한 새로운 페이지를 불러오지 않고 현재의 페이지를 동적으로 다시 작성함으로써 사용자와 소통하는 웹 애플리케이션이나 ..
import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @RunWith(SpringRunner.class) @SpringBoo..
// 라이브러리들을 받아올 원격 저장소 결정 dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.projectlombok:lombok') compile('org.springframework.boot:spring-boot-starter-data-jpa') // 추가 compile('com.h2database:h2') // 추가 testCompile('org.springframework.boot:spring-boot-starter-test') } build.gradle의 dependencies에 위에 주석으로 표시한 부분( // 추가 )을 추가하였다. spring-boot-starter-data-jpa ..
- Total
- Today
- Yesterday
- github
- pm.test
- Basic Type
- 1차 인터뷰
- mysql
- Kotlin In Action
- postman tests
- python3
- git
- Squash and merge
- postman collection
- 주생성자
- Kotlin
- 네이버 2022 공채
- DGS Framework
- 코틀린
- squash merge
- pm.expect
- java
- 코딩테스트
- string
- Python
- solidity
- 확장 함수
- 2차 인터뷰
- postman
- hashcode
- go 특징
- graphql
- downTo
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |