[JPA] data.sql 설정 / 롬복 / Repository Interface 메소드
BackEnd/패캠 2022. 1. 29. 00:58

- ORM 을 JPA로 실현… 그를 구현한게 Hibernate.. 그 중 spring에 필요한게 spring data jpa data.sql 초기에 실습하고 있는 환경은 in-memory db를 활용하므로 데이터가 영구적으로 기록되진 않는다. but) resources 하위에 data.sql파일(sql 쿼리 파일)을 넣으면 코드 실행 전에 이 파일을 실행시켜서 데이터를 db에 넣어준다. call next value for hibernate_sequence => @generatedValue를 실현시켜줌 ㄴ 이 문장의 삽입 위치와 상관 없이 n번 삽입하면 다음에 혹여나 새로운 객체가 db에 저장되려 할 때 id가 n+1번으로 들어가게 됨. ㄴ data.sql에선 우리가 적어줬지만 h2데이터베이스에서 id를 ..

swagger
BackEnd/패캠 2022. 1. 28. 00:57

: 개발한 REST API를 편하게 문서화 ㄴ 제 3의 사용자가 편리하게 API를 호출, 테스트 할 수 있음 : Springboot 에서는 springfox-boot-starter를 의존성 추가 implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0' - Swagger 어노테이션 - Controller @Api(tags = {"API 정보를 제공하는 Controller"}) @RestController @RequestMapping("/api") public class ApiController { @GetMapping("/hello") public String hello(){ return "hello"; } ..

테스트 커버리지 확인
BackEnd/패캠 2022. 1. 27. 00:57

테스트 커버리지 확인

JUnit Test
BackEnd/패캠 2022. 1. 26. 00:00

java test @ExtendWith(MockitoExtension.class) //////////////////////// public class CalculatorTest { @Mock ///////////////////////// public MarketApi marketApi; @BeforeEach /////////////////////// public void setMarketApi(){ Mockito.lenient().when(marketApi.connect()).thenReturn(1000); //////////////// =Mockito.when(~) } @Test public void dollarTest(){ DollarCalculator dollarCalculator=new Dolla..

Rest Template (Server to Server 통신)
BackEnd/패캠 2022. 1. 25. 00:00

서버가 클라이언트가 되어서 다른 서버에게 응답을 요청해보자!!!(고로 서버 두개(클:8080, 서:9090)를 쓸 것임) 즉, 브라우저(찐 클라이언트)에서 요청은 그냥 get 으로만 이루어져있음(파라미터, body xx), 그러면 찐 요청은 클라이언트 서버에서 하고, 응답을 서버에서 받아와 찐 클라이언트에게 보냄 1)get요청, 2)post요청, 3)헤더가 있는 post요청, 4)제너릭객체를 돌려주는 post요청을 해보자 application.yml -> server.port =8080 - controller @RestController @RequestMapping("/api/client") public class ApiController { private final RestTemplateService ..

Intercepter
BackEnd/패캠 2022. 1. 24. 00:00

filter와 유사하게 컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는 역할 filter와 차이점 이녀석은 Spring Context에 등록 된다는 것이다. => 어노테이션 여부, requestParam 등을 확인해서 차별을 둘 수 있음. Filter는 DispatcherServlet이 실행되기 전 , Interceptor는 DispatcherServlet이 실행된 후 Filter는 설정만 하면 되지만 Interceptor는 설정은 물론 메서드 구현이 필요 - AOP와 유사한 기능을 제공할 수 있으며 주로 인증 단계나 logging할 때 사용 /public/~ 으로 리퀘스트하면 무조건 통과, /private/~에 있는 클래스들 중 어노테이션(여기선 우..

Filter (근데 이제 롬복을 곁들인)
BackEnd/패캠 2022. 1. 23. 00:00

* filter : 프레임워크에서 클라이언트에게 오는 요청 /응답의 최전방에 있는 web Application에서 관리되는 영역 ㄴ 이를 통해 요청 /응답의 정보를 변경하거나 spring에 의해 객체 등으로 변환되기 전의 순수한 request, response를 얻을 수 있다. ㄴ 유일하게 ServletRequest, ServletResponse의 객체를 변환할 수 있다. ㄴ 스프링에서는 주로 req/resp의 logging이나 인증에 관한 logic을 여기서 처리한다 - user @Data //getter,setter,toString, 그외(equals,hashCode)등을 자동 생성해주는 롬복~ @NoArgsConstructor @AllArgsConstructor public class User { ..

Exception 처리
BackEnd/패캠 2022. 1. 22. 00:00

- validation 을 위반해서 생긴 exception을 처리해보자 - 각 exception을 잡아서 처리할 수도 있고, 통틀어서 Exception(최상위)로만 잡아줄 수 있다. - 처리하는 방법 2가지 1) @RestControllerAdvice => 클래스를 만들어서 Global Package에 사용, 하지만 basePackageClasses를 적용하면 특정한 클래스에만 적용시킬 수 있다. / 이 안에 2가 있다. 2) @ExceptionHandler => 각 오류를 잡을 메서드에 붙이는 것 - ApiController @Validated //컨트롤러에도 validate해서 요청 파라미터를 검증할 수 있게 함 @RestController @RequestMapping("/api") public cl..

Validation
BackEnd/패캠 2022. 1. 21. 00:00

- dependencies에 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' -user public class User { @NotBlank private String name; @Max(value=120) private int age; @Email private String email; @Pattern(regexp="^\\d{2,3}-\\d{3,4}-\\d{4}$",message = "휴대폰 번호의 양식이 올바르지 않습니다.(01X-XXX(X)-XXXX)") private String phoneNumber; //fieldError.getDefaultMessage()할 때 이 메시지가 default메시지가 됨 @Ove..