본문 바로가기

반응형

- Spring

private method Test 테스트 코드를 작성하다 보니 private method를 호출하여 사용할 상황이 생겼습니다. 테스트를 위해 해당 메소드를 public으로 바꿀 순 없어, 방법을 찾아보다 보니 reflect를 이용한 테스트 방법이 있었습니다. 위와 같이 private 변수는 reflect의 Field 값으로, private 메소드는 reflect의 Metho 값으로 호출하여 사용할 수 있습니다. 하지만, 내부 동작이 노출되는 것은 단일 책임 원칙(SRP, Single Responsibility Principle)에 위배되어 권장하지 않습니다. 참고: https://nowonbun.tistory.com/519 더보기
Spring Cloud API Gateway 신규 프로젝트를 진행하며 스프링 클라우드를 사용하기 위해 학습한 내용입니다. API Gateway (Spring cloud gateway) Gateway Handler Mapping / Web Handler Gateway Handler Mapping 사전에 설정한 클라이언트의 URL과 내부적으로 라우팅 할 URL들을 매칭시키는 역할 (경로와 일치하는지 판단) 특정 predicates 로 요청이 오면 특정 uri 로 변환해주는 역할 Gateway WebHandler 요청 경로에 따른 Filter Chain을 찾아 요청을 전송 Filters Filter는 AbstractGatewayFilterFactory 를 상속받아 구현하며 아래 필터들은 기본 제공이 아닌 구현해야하는 구현체 Global Filter 를 .. 더보기
[JPA] PhysicalNamingStrategy - Table, Column명 커스텀 저는 보통 테이블이나 컬럼명을 대문자로 사용하는데, 그럴 경우 엔티티에 아래와 같이 테이블이나 컬럼명을 지정해줘야합니다. jpa 설정 시 아래와 같이 physical-strategy를 지정하여 사용하면, 자동으로 대문자로 변환하여 사용할 수 있도록 변경할 수 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 spring: jpa: database: mysql database-platform: org.hibernate.dialect.MySQL8Dialect open-in-view: false show-sql: true hibernate: ddl-auto: none format_sql: true naming: implicit-strategy: org.springframework.boot.orm.jp.. 더보기
[lombok] Constructor @NoArgsConstructor 파라미터가 없는 생성자를 생성합니다. final로 생성되어 있는 경우에는 필드를 초기화 할 수 없어 에러가 발생합니다. -> 생성자를 만들 수 없습니다. @RequiredArgsConstructor 추가 작업을 필요로 하는 필드에 대한 생성자를 생성합니다. 초기화 되지 않은 모든 final 필드, @NonNull로 선언된 모든 필드들에 대한 생성자를 자동으로 생성해줍니다. (@NonNull = null-check가 추가적으로 생성, null 유입 시 NullPointerException 발생) 파라미터의 순서는 클래스에 있는 필드 순서에 맞춰서 생성됩니다. @AllArgsConstructor 클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성합니다. @Requir.. 더보기
[ERROR] Error creating bean with name 'repositoryController' / At least one JPA metamodel must be present! 예전에 개발된 API에 신규 개발을 할당받아 실행을 시켰더니 아래와 같은 에러가 발생했습니다. 2020:10:16 17:27:55.691 ERROR --- [RMI TCP Connection(2)-127.0.0.1] o.s.boot.SpringApplication : Application startup failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'repositoryController' defined in URL [jar:file:/Users/jang/server/apache-tomcat-7.0.106/webapps/ROOT/WEB-INF/lib/spring-data.. 더보기
[Spring Hateoas1.2] ModelAssembler, ModelProcessor 이전 포스팅에서 https://halfstorage.tistory.com/61 더보기
[Spring Hateoas 1.2] HTTP Method에 헤이토스 적용 - POST 1 2 3 4 5 6 7 8 9 10 11 @PostMapping("/employees") ResponseEntity newEmployee(@RequestBody Employee newEmployee) { EntityModel entityModel = EntityModel.of(repository.save(newEmployee), linkTo(methodOn(EmployeeController.class).one(newEmployee.getId())).withSelfRel(), linkTo(methodOn(EmployeeController.class).all()).withRel("employees")); return ResponseEntity .created(entityModel.getRequ.. 더보기
[Spring Hateoas 1.2] RepresentationModel 테스트 https://docs.spring.io/spring-hateoas/docs/1.2.0-SNAPSHOT/reference/html/ Spring HATEOAS - Reference Documentation Example 47. Configuring WebTestClient when using Spring Boot @SpringBootTest @AutoConfigureWebTestClient (1) class WebClientBasedTests { @Test void exampleTest(@Autowired WebTestClient.Builder builder, @Autowired HypermediaWebTestClientConfigurer configure docs.spring.io 스프링 래퍼런스에 따.. 더보기

반응형