Websocket을 알아보자. Spring, React에서 사용해보며 (1)
·
Spring
Websocket?http는 비연결성, 무상태성을 가진 단방향 통신이라는 것을 알고 있을 것이다.그런데 서버에서 클라이언트로 요청을 보내야 하는 상황, 이전에 주고 받은 요청들을 알고 있어야 하는 상황이 있으면 어떻게 해야 할까? Polling옛날에는 해결 방법으로 polling을 사용하였다.클라이언트가 주기적으로 서버에 요청을 보내면, 서버에 응답 데이터가 있을 경우 응답이 반환 된다. 그러나 단점이 많이 존재하는데1. 설정한 일정 시간마다 요청을 보내는 것일 뿐 실시간이 아니다.2. 주기적으로 요청을 보내야 하기 때문에 필요없는 통신이 발생하며 프로그램에 부하를 주게 된다.3. http 통신을 하기 때문에 오버헤드가 발생한다. WebSocket이런 불편함을 해결하기 위해 웹소켓이 등장하였다.웹소켓은 ..
QueryDSL의 null처리
·
Spring
Query DSL 활용Query DSL의 큰 장점 중 하나는 where 절에서의 null 처리이다. 여러 조건에 부합하는 결과를 조회해야 한다고 하자.칸반 보드 프로젝트를 진행할 당시 상태와 담당자 닉네임을 필터링할 필요가 있었다.그러나 해당 조건을 전부 받을 수도 있으나 담당자 닉네임 혹은 상태만 들어올 가능성도 있었다.그러면 총 세 개의 Query 메서드를 작성해야 하나? 생각할 수도 있지만Query DSL은 where 절에 null이 들어왔을 경우 알아서 where 문을 생략해 준다!queryFactory.selectFrom(card) .where(card.board.id.eq(boardId) ,eqStatus(searchCond.getStatus()) ..
[Spring] JPA 심화 강의 정리
·
Spring
2주차 데이터베이스 다루기데이터베이스 생성 (H2)Server Mode외부에서 DB 엔진 구동애플리케이션을 종료시 데이터가 사라지지 않음.배포용도In-memory Mode엔진을 설치하지 않고 애플리케이션 내부의 엔진을 사용데이터를 애플리케이션의 메모리에 저장.애플리케이션 종료시 데이터가 사라짐.테스트 용도Embedded Mode엔진을 설치하지 않고 애플리케이션 내부의 엔진을 사용.데이터를 애플리케이션 외부에 저장.애플리케이션 종료시 데이터가 사라지지 않음.개발 용도인메모리 모드 설정 방법# application.ymlspring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:{DB 이름} ..
[Spring] 🙉Fixture Monkey🙉
·
Spring
Fixture Monkey란? Fixture Monkey naver.github.io 나는 새로운 프레임워크, 라이브러리 등을 공부할 때 꼭 도큐먼트부터 찾아간다.블로그 글 여럿 보는 것보다 Docs 한 번이 더 도움 된다.게다가 Fixture Monkey는 네이버에서 개발된 라이브러리인 만큼 한국어도 지원한다! 그래서 픽쳐 몽키란 무엇인가?Fixture Monkey는 테스트 객체를 쉽게 생성하고 조작할 수 있도록 고안된 Java 및 Kotlin 라이브러리입니다. 내 식으로 말하자면 "테스트 코드 객체 생성 노가다를 줄여주는 라이브러리"이다.  종속성JDK 1.8 이상 (또는 Kotlin 1.8 이상)JUnit 5 platformbuild.gradletestImplementation 'com.naverc..
[Spring] DB 테스트 환경 분리
·
Spring
테스트 환경 분리 - application.yml테스트 환경 중에서도 DB를 분리해서 사용하였다.그러다보니 application.yml 파일을 test용으로 분리해야 했다. 분리하는 방법기존 파일을 복사해 테스트 용으로 설정을 바꿨다.test 폴더 아래에 resources 폴더를 만든다.그 아래에 application.yml 파일을 옮기면 test 클래스는 이 파일로 인식하게 된다. 변경할 것spring: config.activate.on-profile: default application: name: GameBlog datasource: driver-class-name: com.mysql.cj.jdbc.Driver password: ${MYSQL_PASSWORD} url: j..
[Spring] AOP란 무엇일까? (+Spring AOP)
·
Spring
AOP AOP( Aspect-Oriented Programming)관점 지향 프로그래밍  다수의 모듈에 공통적으로 나타나는 부분이 존재하는데 이를 횡단 관심사(cross-cutting concern)라고 한다.개발자들은 중복 코드를 싫어하기 때문에 이런 횡단 관심사는 단 한 번만 작성하고 싶다.그때 AOP를 사용한다.@Aspectpublic class MyAspect { @Before("execution(public void aop002.Boy.runSomething ())") public void before(JoinPoint joinPoint) { System.out.println("얼굴 인식 확인: 문을 개방하라"); }}@Aspect 어노테이션은 이 클래스를 AOP에서..
[Spring] JUnit 5 단위 테스트
·
Spring
JUnit 5 자바 프로그래밍 언어 용 단위 테스트 프레임워크단위 테스트는 각 단위가 정확하게 동작하는지를 검사하는 테스트 기법으로 빠르게 작성할 수 있고 문제 발생 시 잘못된 부분을 손쉽게 장점이 있다.  JUnit 5 User GuideAlthough the JUnit Jupiter programming model and extension model do not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and custojunit.or..
[Spring] Naver, Google 로그인 (OAuth2)
·
Spring
OAuth2를 사용하지 않을 경우https://mountain-noroo.tistory.com/176 [Spring] Naver 로그인 (Oauth2 X)네이버 애플리케이션 등록네이버 소셜 로그인 기능을 사용하기 위해서는 네이버 디벨로퍼스에서 네이버 애플리케이션 등록이 필요하다.https://developers.naver.com/ NAVER Developers네이버 오픈 API들을mountain-noroo.tistory.com OAuth2 라이브러리를 사용하지 않을 경우는 위 글을 참고해보자.여기서는 기본적으로 구글, 네이버의 애플리케이션 등록이 끝났음을 전제로 포스팅을 작성하겠다.개인적으로는 OAuth2를 사용하였을 때 훨씬 간편했으나 유연성은 직접 만들었을 때를 따라잡을 수 없다고 생각한다.  OAu..