Spring Boot
-
[SPRING] 테스트코드에서 h2 DB 접근을 위한 세팅Spring Boot 2023. 1. 30. 17:07
1. h2 사이트(https://www.h2database.com/html/download.html)에서 zip 파일을 받은 후 압축을 푼다. 2. 압축 풀은 h2 폴더의 경로를 작업 폴더 부근으로 이동시킨다. 3. 터미널을 켜서 h2가 있는 경로를 찾아 '/h2/bin' 까지 들어간다. 4. (Mac 기준) 'chmod 755 h2.sh'를 입력해 사용 권한을 풀어준다. 5. ./h2.sh 를 입력해 h2 데이터베이스 서버를 실행시킨다. 6. 자동으로 h2 DB 사이트 창이 열릴 것이다. 혹시 창은 열렸는데 로딩만 되고 있다면 주소창에 http://localhost:8082/ 를 입력해 들어가준다. JDBC URL 입력칸에 jdbc:h2:~/test 를 입력해 연결한다. (한번만 이렇게 입력할 것이며,..
-
[JPQL] JPQL이 제공하는 모든 검색 조건Spring Boot 2023. 1. 20. 13:06
member.username.eq("member1") // username = "member1" member.username.ne("member1") //username != "member1" member.username.eq("member1").not() // username != "member1" member.username.isNotNull // username != null member.age.in(10, 20) // age in (10, 20) member.age.notIn(10, 20) // age not in (10, 20) member.age.between(10, 30) // age 10 ~ 30 member.age.goe(30) // (g)reat (o)r (e)qual : age >= ..
-
[SPRING] 더미데이터를 만들어보장Spring Boot 2023. 1. 10. 15:09
더미데이터 추가하는 클래스 InitDb를 application이 있는 디렉토리 위치에 만든다. 뼈대를 그려보자. InitDb 안에 static 클래스로 InitService를 만들고 그안에 데이터를 추가해주는 dbInit1 메서드를 만든다. 그리고 각각 빈으로 등록해준다. @Component public class InitDb { @Component static class InitService { public void dbInit1(){ } } } 더미 데이터를 짜고 EntityManager에 persist한다. @Component public class InitDb { @Component static class InitService { @PersistenceContext EntityManager em;..
-
-
[SPRING] 서버 실행 시 더미데이터를 생성해보장!Spring Boot 2023. 1. 2. 13:01
게시글 조회 API 하나를 테스트 해보기 위해 서버를 실행하고 매번 '회원가입 -> 로그인 -> 게시글작성'을 실행해보는 것도 굉장히 번거로운 일이다. 이럴 때 더미데이터로 미리 계정과 게시글을 다 만들어놓는다면 얼마나 편리할까? 알고보면 더미데이터를 적용하는 것은 매우 쉽다. @Component public class InitData implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { ... // 실행할 코드 } } 클래스에 ApplicationRunner 인터페이스를 적용하면 run 메서드를 오버라이드하라는 경고가 뜬다. run 메서드를 오버라이딩하여 안에 실행할 코드를..
-
[SPRING] AOP를 사용해보장Spring Boot 2023. 1. 1. 22:15
업무 로직을 포함하는 비즈니스 로직을 핵심 기능(Core Concerns)라고 부르고, 핵심 기능을 도와주는 부가적인 기능을 부가기능(Cross-cutting Concerns)이라고 부른다. AOP란? 로직을 짤 때 기능을 핵심기능과 부가기능으로 분리해서 관리한다면 더할 나위 없이 좋을 것이다. 이때 AOP는 핵심기능에서 부가기능을 애스팩트(Aspect)라는 모듈 형태로 만들어서 더 설계적으로 분리할 수 있게 도와준다. 애스펙트(Aspect)란? Advice + PointCut = Aspect 애스펙트는 부가기능을 정의한 코드인 어드바이스(Advice)와 어드바이스를 어디에 적용하지를 결정하는 포인트컷(PointCut)을 합친 개념이다. AOP 개념을 적용하면 핵심기능 코드 사이에서 부가기능을 독립적인 ..
-
[SPRING] 테스트코드 어노테이션, 라이브러리, 메서드 모음Spring Boot 2022. 12. 28. 18:07
포스트맨도 있는데 왜 굳이 테스트코드를 써야할까? 회원가입, 로그인을 한 뒤에 api를 수행하는 일을 하지 않을 수 있다. 예외 상황(ex. 게시물 id 중복, 게시물 찾을수 없음, 올바른 값 전달 안함)를 하나하나 테스트할 때 매 번 포스트맨에서 값을 바꿔가며 실행시켜볼 필요가 없다. 여러가지 예외 상황을 테스트코드에 정리할 수 있다. 어노테이션 @RunWith(SpringRunner.class) Junit 실행할 때 스프링이랑 같이 엮어서 실행하겠다고 선언한다. @SpringBootTest 스프링부트를 띄운 상태로 테스트한다. 이게 없으면 스프링의 애노테이션인 @Autowired 이런 것들이 다 실패한다. @Transactional DB에 추가/수정/삭제 등 변경될 때는 이걸 넣어준다. 테스트코드에서..