개발 공부는 어려워
반응형
article thumbnail
Spring Boot에서 커스텀 어노테이션 작성법
study/spring 2024. 6. 13. 16:31

swagger 설정을 하던 도중 ApiResponse, ApiResponses라는 어노테이션을 사용하게 되었다. 해당 어노테이션의 사용 방법은 responseCode = "200", description="OK" 이러한 방식으로 특정 responseCode가 응답될 경우 설명을 보여주는 코드인데 원래 코드에서 사용하던 내용은 아래와 같다. @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "BAD REQUEST"), @ApiResponse(responseCode = "404", description = "NOT FOUND")..

article thumbnail
네이버 메일 보내기
study/spring 2024. 5. 27. 16:54

네이버 메일에 환경설정을 들어가서 설정을 한 후   spring boot에 있는 gradle 설정을 해준다.implementation 'org.springframework.boot:spring-boot-starter-mail' 그 다음으로는 application 설정을 해준다.spring: mail: host: 사용할 host 주소 port: 위에 스크린샷에서 내리면 있는 포트번호 username: 아까 환경설정한 네이버 Id password: 아까 환경설정한 네이버 PassWord properties: mail: smtp: starttls: enable: true auth: true s..

Spring Boot 어노테이션 만들기(Custom Annotation)
study/spring 2024. 5. 27. 13:05

swagger 설정을 하던 도중 ApiResponse, ApiResponses라는 어노테이션을 사용하게 되었다. 해당 어노테이션의 사용 방법은 responseCode = "200", description="OK" 이러한 방식으로 특정 responseCode가 응답될 경우 설명을 보여주는 코드인데 원래 코드에서 사용하던 내용은 아래와 같다. @ApiResponses({ @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "BAD REQUEST"), @ApiResponse(responseCode = "404", description = "NOT FOUND")..

article thumbnail
Jpa @CreateData어노테이션
study/spring 2023. 12. 11. 13:27

Jpa사용했을떄 @CreateData 어노테이션을 본적 있을것이다. @CreateData는 해당 엔티티에 save()메소드를 실행했을떄 localtime 기준해서 데이터를 넣어주는데 이 어노테이션만 사용하게 된다면 데이터가 저장되지 않는다. 따라서 main class에서 아래의 어노테이션을 설정해주고 사용할 entity class에서 위의 어노테이션을 설정해주면 이렇게 데이터를 자동으로 insert 시킬 수 있다.

article thumbnail
JPA 설정
study/spring 2023. 11. 21. 16:20

의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j' 설정 jpa: hibernate: ddl-auto: update properties: hibernate: format_sql: true show_sql: ture defer-datasource-initialization: true ddl-auto (테이블 생성 규칙) none (데이터 베이스를 변경하지 않음) update (엔티티 변경 내용만 적용) create (서버 실행시 모두 삭제하고 다시 생성) vreate-drop (create와 같지만 서버가 종료될때 모두 삭제) validate (..

article thumbnail
Thymeleaf 설정
study/spring 2023. 11. 21. 15:34

타임리프란? 위에서 말했듯 결국 MVC패턴에서 View에 해당하는 화면을 만들때 사용하는 템플릿 엔진이다. 타임리프 의존성 주입 타임리프를 사용하기 위해서는 의존성을 주입해야 하는데, https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf 위 링크를 들어가 사용할 버전을 클릭후에 사용하고 있는 프로젝트 설정에 따라 추가하면 된다. 하지만 Spring Initializr(https://start.spring.io/) 사이트를 이용한다면, ADD DEPENDENCIES...를 클릭하여 사용할 내용을 입력하면 된다. 혹은 인텔리제이에서 프로젝트 생성시 추가하면 된다. 설정 경로설정 Thymeleaf를 사용할 기본 경로를 설정해야 하는데 아래 경로에 있는 res..

@ModelAttribute 어노테이션
study/spring 2023. 8. 2. 22:32

@ModelAttribute 어노테이션은 컨트롤러에서 model을 넘길때 사용되는데 아래 코드를 보자 @GetMapping("/") public String a(Model model){ model.addAttribute("test1","테스트1"); model.addAttribute("test2","테스트2"); return "test"; } 이런식으로 model에 test1, test2를 담아야 하는 상황이 여러번 생긴다고 생각하면 매번 코드에 작성을 해야한다. 하지만 위에서 따로 @ModelAttribute 어노테이션을 사용해서 빼두면 편하게 사용할 수 있다. 만약에 ENUM으로 테스트1, 테스트2를 설정해 두었다면 아래와 같이 사용할 수 있다. @ModelAttribute("test") public..

@SpringBootTest 어노테이션 사용 이유
study/spring 2023. 8. 1. 17:47

이전 글에서 테스트 코드 작성시 @Value를 사용하면 받아오는 데이터가 없다고 설명했다. 그 이유는 테스트클래스에 @SpringBootTest 어노테이션이 없기 떄문이다. package hello.jdbc.connection; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import java.sql.Connection; import stati..

Application.yml에 작성한 데이터 사용하기
study/spring 2023. 8. 1. 17:37

Spring Boot를 사욜하다보면 applcation.yml파일을 본적이 있을 것이다. DB로 예시를 들면 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: url username: 유저UD password: 비밀번호 Mysql를 사용할떄 application.yml에 datasource를 이런식으로 셋팅해줘야 db연동이 된다. 만약에 우리가 해당 데이터 베이스가 잘 연동됐는지 확인하기 위해서 package hello.jdbc.connection; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import jav..

SOLID(객체 지향 설계 5원칙)
study/spring 2023. 3. 6. 20:57

1. SRP(Single responsibility principle) : 단일 책임 원칙 - 한 클래스는 하나의 책임만 가져야 한다. - 변경이 있을 때 파급 효과가 적어야 한다. 2. OCP(Open/Closed Principle) : 개방 - 폐쇄 원칙 - 확장은 열려 있으나, 변경에는 닫혀 있어야 한다. - 다형성을 활용한다. - 인터페이스를 구현한 새로운 클래스를 만들어 기능을 구현한다. 3. LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 - 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야한다. 4. ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 - 특정 클라이언트를..

반응형