Spring 26

[Spring Boot] Repository - Service - Controller

Repository - Service - Controller Repository - Service - Controller 순으로 JPA 사용하기 Repository 인터페이스 생성 어노테이션 주입 @Repository JpaRepository 상속받기 (extends) 기본 함수 findAll findById save (update, insert) delete 사용자 생성 함수 사용자가 조합하여 생성 가능 예시 List findAllByReplyBoardIdx(Long replyBoradIdx); void deleteById(Long replyIdx); Service 클래스 생성 어노테이션 주입 @Service @RequiredArgsConstructor Repository 생성자 주입 final pri..

Spring/Spring Boot 2024.04.21

[Spring Boot] Scheduler

Scheduler 스케줄러 관련 어노테이션 @EnableAsync 비동기적으로 처리하도록 제공하는 어노테이션 각기 다른 스레드에서 실행된다. @Async 해당 메소드 로직이 시작되는 시간을 기준으로 milli sec 간격으로 실행 이전 작업이 완료될 때까지 다음 작업이 진행되지 않음 @Scheduled(fixedRate = n) 스케줄 옵션을 설정하는 어노테이션 해당 어노테이션을 사용하면 일정한 시간 간격이나 특정 시간에 코드가 실행되도록 설정할 수 있다. n에는 초를 설정하며, 값이 1000이면 1초이다. 속성 fixedRate 작업 수행시간과 상관없이 일정 주기마다 메소드 호출 fixedDelay 작업을 마친 후부터 주기 타이머가 돌아 메소드 호출 initialDelay 스케줄러에서 메소드가 등록되자..

Spring/Spring Boot 2024.04.13

[Spring Boot] TDD

테스트 주도 개발 (Test Driven Development, TDD) 테스트 관련 어노테이션 및 클래스 @WebMvcTest @Controller, @RestController가 설정된 컨트롤 클래스를 테스트한다. @Service, @Repository에는 사용할 수 없다. MockMvc 웹 API를 테스트할 때 가상의 HTTP 요청을 만들어주는 클래스이다. @Disabled 테스트 메소드를 비활성화 시키는 어노테이션 @BeforeAll 테스트 클래스 기준으로 테스트 메소드들이 실행되기 전에 한번만 실행 @AfterAll 테스트 클래스 기준으로 테스트 메소드들이 실행된 후에 한번만 실행 예로 리소스 정리 같은 코드 작성 @BeforeEach 각 테스트 메소드가 실행되기 전에 매번 실행 @AfterEa..

Spring/Spring Boot 2024.04.13

[Spring Boot] URI 어노테이션

URI 어노테이션 2가지 (경로 설정) @RequestParam URI 형식 localhost:8080/update-form?index=1 메서드 구현 // 관리자 페이지 - 회원목록 상세 출력 // localhost:8080/update-form?index=1 @GetMapping("/update-form") public String viewUpdateForm(@RequestParam int index, Model model) { model.addAttribute("index", index); Member member = memberList.get(index-1); model.addAttribute("member", member); return "update-form"; } html에서 경로이동 설정 ..

Spring/Spring Boot 2024.04.06

[Spring DB] DB 관련 어노테이션, 데이터 모델링 클래스

DB 관련 어노테이션 @Entity DB 테이블과 1:1로 매칭되는 JPA 클래스 @Table 클래스 이름이 테이블 이름으로 자동으로 설정되는데, 이럴때 테이블명 직접 지정할 때 사용 @Id 기본키 id 열로 사용 @GeneratedValue(strategy = GenerationType.IDENTITY) GenerationType 종류 IDENTITY MySQL, MariaDB, PostreSQL, H2DB SEQUENCE Oracle, PostreSQL AUTO 자동 선택 @Column(name=”컬럼명”) 해당 멤버 변수의 컬럼명 지정 @DateTimeFormat(pattern = “yyyy-mm-dd”) Date 데이터를 가져올 때 날짜 형식 사용자 지정 가능 @RequestParam @Model..

Spring/Spring Boot 2024.04.06

[Spring Boot] Model에서 Rest API로 변환

개념 정리 이전까지는 @RequestParam으로 사용자 입력 값을 가져오고, Model을 사용하여 addAtribute로 데이터를 보내서 출력했다. 하지만 REST API를 사용한다면 JSON 형식의 데이터를 주고 받는다. @RequestBody로 사용자 입력 값을 가져오고 @ResponseBody로 데이터를 보내준다. 그리고 View만 출력하는 ViewController와 REST API 메서드만 모여있는 ApiController를 구분해서 구현한다. ApiController 클래스는 @RestController 어노테이션을 준다. (@RestController = @Controller + @ResponseBody) RestController의 주요 메소드는 GET, POST(create), DELE..

Spring/Spring Boot 2024.04.06

[Spring Boot] Test

Spring Boot Test Test 관련 어노테이션 @SpringBootTest 테스트 환경을 기본 설정해주는 어노테이션 @Test 테스트할 메소드에 붙이는 어노테이션 @DisplayName(”메소드 이름”) 해당 어노테이션에 메소드 이름을 적으면 콘솔에 출력된다. @BeforeAll 해당 메소드가 클래스 초기화시(테스트 실행 시 시작할 때) 한 번 수행되도록 하는 어노테이션 static 메소드로 생성 (static void 메소드명() {…}) @BeforeEach 해당 메소드가 @Test 메소드를 호출시마다 한 번 수행되도록 하는 어노테이션 void 메소드명() {…} 테스트 방법 build.gradle에 아래 코드 추가 testCompileOnly 'org.projectlombok:lombok'..

Spring/Spring Boot 2024.04.06

[Spring DB] Repository (JPA, JPQL, Native SQL)

Spring Boot (JPA, JPQL, Native SQL) JpaRepository 스프링 JPA 라이브러리에서 Entity에 대한 기본적인 CRUD가 가능하도록 만든 인터페이스 Repository JpaRepository를 상속받아 엔티티Repository 인터페이스를 생성한다. (@Repository 어노테이션 추가) JPA Repository에서 작성하는 SQL문 자동 실행되는 함수 JPA 기본 함수 종류 finaAll() SELECT * FROM 테이블명 을 실행 findBy열이름() SELECT 열이름 FROM 테이블명 을 실행 예시 findById((long)2) ⇒ SELECT * FROM 테이블명 WHERE id=2; findByUser_id(”hong”) ⇒ SELECT * FROM..

Spring/Spring Boot 2024.04.06

[Spring Boot] Devtools, LocaleResolver(다국어 처리)

Spring Boot Devtools Devtools html 파일 저장 시 서버 재시작없이 view 파일 변경 가능 적용 build.gradle - dependencies 안에 아래 코드 추가 developmentOnly 'org.springframework.boot:spring-boot-devtools' preferences - 컴파일러 - 프로젝트 자동 빌드 체크 고급설정 - 컴파일러 - auto-make 허용 체크 우측 상단에 구성 편집 - 옵션 수정 update 작업 시 - 클래스 및 리소스 업데이트 프레임 비활성화 시 - 클래스 및 리소스 업데이트 application.properties 안에 아래 코드 추가 spring.devtools.restart.enabled=true spring.thy..

Spring/Spring Boot 2024.04.03