spring boot
-
[Spring] Filter, Interceptor, AOP 차이spring boot 2024. 8. 9. 13:15
Filter, Interceptor, AOP의 공통점이라 하면 무엇이 있을까? 모두 공통업무를 한번에 할 수 있도록 해준다는 것이다. 따라서 코드를 중복되게 쓰지 않게 해준다. 그렇다면 차이점은 무엇이 있을까?각각의 실행시점에 차이가 있다. 요청이 들어올 경우 Filter -> Interceptor -> AOP -> Interceptor -> Filter 순으로 거치게 된다. 각각의 용도에도 차이가 있다1. Filter 요청과 응답을 거른뒤 정제하는 역할을 한다.요청에 대한 인증, 권한 체크등에 사용된다.[Filter의 실행메서드]init() - 필터 인스턴스 초기화doFilter() - 전/후 처리destroy() - 필터 인스턴스 종료 2. Interceptor요청의 작업 전/후에 가로챈다로그인 체크..
-
JPA 기본키 생성 전략 @GeneratedValuespring boot 2024. 3. 25. 21:15
GenerationType.IDENTITY IDENTITY는 기본키 생성을 db에 맡기는 방식입니다. MySQL, PostgreSQL 등에서 사용합니다. 값을 insert할때 id값을 AUTO_INCREMENT해준다. id값을 따로 설정하지 않은 경우 id값은 db에 들어간 이후에 알수있다. GenerationType.SEQUENCE SEQUENCE는 규칙에 따라 값이 일정하게 증가하는 방식입니다. Oracle, PostgreSQL 등에서 사용합니다. 예) @Entity @SequenceGenerator( name="users_seq", // 식별자 이름 sequenceName="users_seq", // 시퀀스 이름 initialValue=100, // 시작 수 allocationSize=1 // 호..
-
[Spring boot] JPA 정렬과 페이징spring boot 2024. 2. 24. 23:17
JPA 정렬 방법 1. List findAllByOrderByAgeDesc(); 메소드 이름에 OrderBy + (정렬할 필드 이름/ 첫 글자 대문자로) + Asc or Desc (Asc = 오름차순, Desc = 내림차순) 방법 2. List findAll(Sort sort); // 사용 방법 List userEntities = userRepository.findAll(Sort.by(Sort.Order.asc("age"))); JPA 페이징 List findByAgeGreaterThan(Integer age, Pageable pageable); // 사용 방법 List userEntities = userRepository.findByAgeGreaterThan(10, PageRequest.of(1, 10..
-
[Spring boot] JUnit에 대해 알아보자spring boot 2024. 2. 17. 22:16
JUnit이란? Java의 대표적인 Test Framework 어노테이션 기반 테스트 지원 Assert를 사용하여 기대값에 대해 수행 결과를 확인할 수 있음 F.I.R.S.T 원칙 Fast: 테스트 코드는 빠르게 실행되어야 한다. Independent: 독립적으로 실행이 될 수 있어야 한다. Repeatable: 매번 같은 결과가 나와야 한다. Self-Validating: 그 자체로 실행하여 결과를 확인 할 수 있어야 한다. Timely: 코드 완성되기 전부터 테스트가 가능해야 한다. package com.example.demo.test; import org.junit.jupiter.api.*; public class TestLifeCycle { @BeforeAll static void beforeAl..
-
[Spring boot] RestTemplate에 대해 알아보자spring boot 2024. 2. 17. 00:44
RestTemplate이란? 스프링에서 제공하는 HTTP통신 기능을 쉽게 사용할 수 있게 해주는 템플릿 동기 방식으로 처리됨(비동기 방식을 원하면 AsyncRestTemplate 사용) 여러가지 메소드 제공 RestTemplate이 제공하는 여러 메소드 Method 설명 getForObject GET 형식으로 요청하여 객체로 결과 반환 받음 getForEntity GET 형식으로 요청하여 ResponseEntity로 결과 반환 받음 postForObject POST 형식으로 요청하여 객체로 결과 반환 받음 postForEntity POST 형식으로 요청하여 ResponseEntity로 결과 반환 받음 delete DELETE 형식으로 요청 put PUT 형식으로 요청 patchForObject PATCH..
-
[Spring boot] JPA 적용하기, MySQLspring boot 2024. 2. 14. 00:55
1. dependencty 추가 mysql mysql-connector-java 8.0.33 org.springframework.boot spring-boot-starter-data-jpa 2. application.properties 설정 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/name?serverTimezone=Asia/Seoul spring.datasource.username= spring.datasource.password= # DDL(create, alter, drop) 정의시 DB의 고유 기능 사용 가능 spring.jpa.hiberna..
-
[Spring boot] Lombok에 대해 알아보자spring boot 2024. 2. 12. 22:55
설명 Lombok은 반복되는 메소드를 Annotation을 사용하여 대체해주는 라이브러리이다. 예: @Getter, @Setter, @NoArgConstructor, @AllArgConstructor ..... 1. @Getter, @Setter @Getter 와 @Setter는 일일이 get, set 메서드를 쓸 필요없이 대체한다 @Getter @Setter public class User { private int age; } User user = new User(); user.getAge(); user.setAge(10); 2. @NoArgConstructor, @AllArgConstructor, @RequiredConstructor @NoArgConstructor는 파라미터가 없는 생성자를 생성한다..
-
[Spring boot] Logback에 대해서 알아보자.spring boot 2024. 2. 12. 00:13
Logback이란? Log4J를 기반으로 개발된 로깅(Logging) 라이브러리 특징 로그에 특정 레벨 부여가능 (Trace -> Debug -> Info -> Warn -> Error) 출력 방식 설정 가능 압축 지원 로그 보관 기간 설정 가능 설정 방법 Classpath에 있는 logback 설정 파일에 참조함 Spring boot --> logback-spring.xml Spring, Java legacy --> logback.xml 로그 레벨 Trace - Debug 레벨 보다 더 디테일한 메시지를 표현하기 위한 레벨 Debug - 어플리케이션의 디버깅을 위한 메시지 레벨 Info - 정보성 메시지 Warn - 경고 레벨, 처리 가능한 상황 Error - 시스템적으로 심각한 문제가 발생하여 작동이..