본문 바로가기

개발/백엔드

(8)
spring boot - 환경 변수 작업을 하다 보면 코드나 깃에 들어가면 안되는 변수들(ex. 비밀번호)이 있습니다. 이런 변수들을 잘 관리하기 위해 환경변수를 만듭니다.환경변수 세팅저는 config를 관리하는 패키지에 PropertyConfig파일을 만들었습니다. @Configuration: 세팅 파일임을 선언합니다.@PropertySource("classpath:static/properties/env.properties"): 어떤 파일을 환경변수로 사용할 것인지 정의합니다.지정한 파일에 환경변수 파일을 넣습니다. .gitignore에 해당 파일을 꼭 넣어줍니다. 이것을 빠트리면 모든 비밀번호가 공개됩니다. 만약 gitignore이 동작하지 않는다면git rm -r --cached . 로 캐시를 지우고 다시 진행하 됩니다.사용법저는 s..
spring boot - 메일 전송 이메일 인증을 통해서 회원 가입을 하는 경우 서버에서 메일을 보낼 수 있어야 합니다. 계정 설정구글 계정 - 보안으로 이동합니다. 그리고 2단계 인증을 해줍니다. 이제 앱 비밀번호를 설정해 주겠습니다. 앱 비밀번호로 가면 아래와 같이 나옵니다.  그럼 16개의 알파벳이 나옵니다. 구글은 이걸 따로 적어두지 않아도 된다고 하지만 이거 나중에 써야 하므로 적어둡니다. 이제 메일을 설정할 것입니다. gmail - 설정으로 갑니다. 전달 및 POP/IMAP로 가서 둘 다 사용으로 체크해 줍니다. 서버이제 서버 설정을 합니다. build.gradle에 다음 의존성을 넣어줍다. implementation 'org.springframework.boot:spring-boot-starter-mail' : 이메일을 보내기..
spring boot - db 조회 백엔드한테 정보를 달라고 했으면 db에에 해당하는 값을 가져와야 합니다. JPA를 통해 값을 가져와 봅시다.db 폴더 안에 UserRepository interface를 만듭니다. 여기에 JpaRepository를 상속받습니다. UserEntity 형식이고 primary key 타입이 long입니다. JpaRepository에 가보면 기본적으로 있는 것들이 있습니다. 이것들을 이용해 편하게 쿼리를 쓸 수 있고 직접 만들수도 있습니다. 저는 name과 password가 일치하는 레코드가 있는지 찾아야 합니다. Jpa에 findFirstByNameAndPassword 함수를 넣어줍니다. name과 password가 일치하는 것 중 하나를 찾아줍니다. 없을수도 있으니 optional을 넣어줍니다.이제 Cont..
spring boot - filter 실제 서비스를 운영하다 보면 요청에 따라 요청과 응답을 확인하고 싶을 때가 있습니다. 이때 저희는 Filter를 사용할 수 있습니다. filter 패키지 하나 만들고 여기에 Log를 출력해 주는 LoggerFilter 클래스를 하나 만듭니다. 해당 클래스는 Component annotation을 붙여서 bean에 등록해 줍니다. @Component는 앱이 시작하는 동안 어플리케이션 컨텍스트에 추가해 주는 것인데 일단은 그냥 써줍시다. 빨간 줄에 커서를 대고 alt + enter, implement method, doFilter를 추가해 줍니다. servletRequest를 HttpServletRequest로 형변환해 주고 이를 ContentCachingRequestWrapper객체로 만들어 줍니다. re..
spring boot - post 전송(with data) 유저가 로그인을 한다고 가정해 봅시다. 그럼 아이디와 비번을 서버에 보낼 것입니다. 먼저 사람들이 입력을 하는 형식을 만들어 봅시다. user 밑에 model 패키지를 만들고 UserLoginRequest를 만듭니다. 이제 UserLoginRequest에 어떤 식으로 입력해야 하는지 적을 것입니다. 이름과 비번을 입력받는데 빈칸이면 안되니까 NotBlank annotation을 넣어줍니다.만약 NotBlank에서 에러가 발생하면 build.gradle에 마지막 문구를 추가해 줍니다.controllercontroller 패키지에는 아래와 같이 만듭니다. http://localhost:8080/open-api/user/login에 UserLoginRequest 형식으로 호출한다는 뜻입니다. 이걸로 로그인을 ..
spring boot - 데이터베이스 연결 백엔드에서는 데이터베이스에 있는 정보를 읽은 다음 적절한 정보들을 넘겨줍니다. 데이터베이스에 연결하는 법을 배워봅시다.우선 데이터베이스를 세팅합니다(https://codestudycafe.tistory.com/99). 저는 mysql과 workbench를 사용할 것입니다. 데이터베이스우선 데이터베이스를 설정합니다. id, name, password를 만들어 줍니다.PK는 primary key, NN은 not null, AI는 auto increase입니다. 오른쪽 아래 apply를 눌러 적용할 수 있습니다.spring boot resource 잍에 있는 application에 다음 정보를 넣습니다. ~~.yaml이 아니면 yaml으로 고쳐줍니다. 세팅한 값마다 다르니 각각이 어떤 의미인지 간단하게만 살펴..
spring boot - api 구조 보통 프런트엔드에서 백엔드에 api를 호출하고 정보를 받아온 다음 그 정보를 화면에 보여줍니다. 그럼 백엔드에서 api를 받고 정보를 넘겨줄 수 있어야 하는데요, 어떤 식으로 진행이 되는지 알아봅시다.controllercontroller는 유저가 유저가 정보를 요청할 때 어떤 경로로 요청해야 하는지, 어떤 식으로 요청해야 하는지가 담겨 있습니다.파일은 src - main - java - com - example - streak 위치에 계속 만들것입니다. 해당 파일에 package로 health, controller를 만들고 java class로 healthController를 만듭니다. 여기에 다음과 같이 만듭니다. @Slf4j부터 만들면 알아서 import 부분이 만들어 집니다. 어노테이션(@~~)을 ..
spring boot - 시작 spring boot로 백엔드를 시작하기 위한 세팅입니다.spring initializrspring boot를 사용하기 위해 복잡한 세팅들이 있는데 이를 간단하게 해주는 사이트입니다(https://start.spring.io/). 여기서 언어, 버전, 의존성 등을 설정할 수 있습니다.몇 가지 유용한 의존성에 대해 알아보겠습니다.Lombok반복되는 부분을 아주 많이 줄여주는 annotation을 제공해 줍니다. 클래스를 만들 때 getter, setter를 통해 값을 읽고 씁니다. 그리고 toString을 통해 출력을 하고 생성자를 통해 객체를 생성합니다. 원래는 이 기능들을 구현해 주어야 하지만 Lombok 이 다 만들어 줍니다. 아니면 Data로 한 번에 만들 수도 있습니다. 그리고 @Slf4j 를 통..