본문 바로가기
728x90

Spring13

[Spring] 비동기 처리 비동기 처리를 찾아본 이유 이전 시간에 파이썬 서버를 구성하고 api 통신으로 일부 처리는 파이썬에게 맡기도록 하였다. 잘 처리되고 됐다 생각하던 찰나, 다른 문제가 생겼다. 파이썬으로 request를 보내고 응답이 올때까지 클라이언트도 대기 상태가 된다. 키워드 추출 후 유의어, 반의어 등은 나중에 볼 것이라 요청만 보내면 되는데, 이것마저 기다려야 되는 것이다. 그렇기에 스프링에서 파이썬에게 요청을 보낼 때 비동기 요청을 하고, 아래 코드를 실행시키는 방법을 찾아 적용해보았다. 지금은 팀 회의를 거쳐서 다시 동기적으로 되돌려 놨다. 문제점 발견 팀 회의를 통해 동기적으로 돌리기로 했다. 그래서 비동기 작업임을 알려주는 @Aysnc 어노테이션만 제거하면 되겠다 싶어 주석 처리 후 다시 실행시켜보았는데 .. 2022. 5. 30.
[Spring] 파이썬 서버로 api 통신하기 파이썬 처리가 필요한 이유 현재 졸업프로젝트로 백엔드를 담당하고 있고, 스프링을 사용하기로 결정했다. 우리의 비즈니스 로직 중 STT와 키워드 추출이 필요한데, 이는 파이썬 쪽에서 처리가 필요하다. 처음에는 다음과 같이 처리를 하였다. 1. 파이썬 파일 실행 (ProcessBuilder, Process) 자바에서 ProcessBuilder를 사용하면, 컴퓨터의 python을 실행시킬 수 있다. 코드는 다음과 같다. package site.atkproject.sttservice.util; import lombok.NoArgsConstructor; import java.io.*; @NoArgsConstructor public abstract class PythonFileManager { protected S.. 2022. 5. 27.
[Spring] Validation 유효성 검사 유효성 검사를 해야하는 이유는 클라이언트가 입력한 값이 서버에서 적절하게 이해하고 처리해줄 수 있는지 사전 검사해주는 역할이라 보면 된다. 스프링 부트에서는 아래의 라이브러리를 추가해주면 어노테이션만으로 아주 쉽게 유효성 검사를 할 수 있다. 커스텀이 필요하면 그때는 만들어주면 될거 같다. implementation 'org.springframework.boot:spring-boot-starter-validation' 유효값 검증을 위해 validation을 사용하는데, 다음과 같은 어노테이션들을 제공한다. 어노테이션 설명 @NotEmpty NULL 체크, 문자열의 경우 길이 0인지 검사 @NotBlank NULL 체크 및 문자열의 경우 길이 0 및 빈 문자열(" ") 검사 @Length(m.. 2022. 5. 20.
[JPA] Spring Data JPA에서 바로 DTO를 받아보자 게시판에서 좋아요, 싫어요 기능을 구현하려고 하고 있다. Spring Data JPA를 활용해서 나는 인터페이스만 구현해서 아주 편안하게 값을 가져와서 활용하고 있다. 쉬운 쿼리들은 메서드 네임만 잘 조합해도 되는데, 나는 이제 좋아요, 싫어요 개수를 구하고 싶다. 즉, 쿼리에서 count()를 이용해서 갖고 올려고 하는 것이다. 찾아보면 메서드 네임으로도 있을거 같긴 한데.. 일단은 JPQL을 통해서 갖고오는 방법을 정리해 보겠다. 대학 팀플들 땜에 프로젝트 글 정리를 못했는데, 조만간 다 정리해서 올리겠다 ㅠㅠ 좋아요 엔티티 먼저 좋아요 엔티티를 구성했다. @Getter @NoArgsConstructor @Entity public class Likes { @Id @GeneratedValue priva.. 2022. 5. 12.
[Spring Thymeleaf] Layout 만들기 footer 영역 입니다. 레이아웃을 만드는 이유 타임리프를 통해 우리는 편안하게 스프링의 모델들을 html에 동적으로 표현할 수 있다. 암튼 내용을 보여주려면 html 파일들이 있어야 할텐데, 보통 header, nav, footer 같은 공통의 영역이 있고, 한 div 태그 안에 다른 내용들을 보여주게끔 설계를 많이 한다. 이럴려면 공통의 레이아웃을 만들어 주어야 하는데, 이때도 타임리프에서 의존성을 추가해서 사용해줄 수 있다. build.gradle에 아래를 추가해주자. implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' 그리고 나는 다음과 같이 templates 안에 디렉토리와 파일들을 만들어 주었다. footer, header는 .. 2022. 5. 8.
[Spring Boot] Devtools를 써보자 로컬 테스트 시 불편한 점 로컬에서 스프링 애플리케이션을 실행할 때 어떻게 하는가? 물론 TDD를 활용하여 테스트를 하는게 제일 베스트지만, 나같은 초보는 아직까지 브라우저에서 화면을 보는 것을 편-안해한다. (안 좋은 습관?이라니 추후 TDD에 익숙해지자) 하지만, 코드를 수정 후 애플리케이션을 다시 실행시키려면 이는 매우 번거롭다. 또 DDL-AUTO를 create 등으로 해두면, 데이터가 많을 시 은근 걸리는 시간도 거슬린다. 이럴 때 쓸 수 있는게 Devtools이다. 대표 기능 대표 기능은 다음과 같다. Automatic Restart: classpath에 있는 파일이 변경될 때마다 애플리케이션을 자동으로 재시작해준다. 개발자가 소스 수정 후 애플리케이션을 재실행하는 과정을 줄여 생산성을 향상시.. 2022. 5. 8.
728x90