분류 전체보기 793

JPA Projection FindAll

JPA 에서 제공하는 Projection 은 FindAll() 메서드 정의시 리턴타입 오류가 난다. 이는 SimpleJpaRepository 에 정의된 내용 때문인 것 같다. 이를 회피하기위해서 FindAll~By() 로 메서드를 작성하여 사용한다. 이를 찾아본 이유는 Pagable , QueryDSL 과 연계하고 싶어서 이다. //프로젝션 public interface PostSummary { Long getId(); String getSubject(); Long getAccountId(); String getAuthor(); LocalDateTime getRegisterDate(); LocalDateTime getUpdateDate(); } //리포지토리 public interface PostRepo..

@CreationTimeStamp, @UpateTimestamp

하이버네이트 5.2 이상 부터 Entity 의 수정일과 등록일을 관리해주는 어노테이션을 제공한다. Java8 에서 지원하는 시간 클래스를 사용할 수 있게 끔 해주고 있다. @Entity @Getter @Setter public class Reply { @Id @GeneratedValue private Long id; private String subject; @Column(unique = true) private Long accountId; private String author; private String content; @CreationTimestamp private LocalDateTime registerDate; @UpdateTimestamp private LocalDateTime updateDa..

Vue Router 와 Href 속성

Bootstrap-Vue 사용시 주어지던 href 속성에서 일어나는 Vuex 관련 문제이다. 앞으로 더 공부해야할 부분이다. Vuex 사용시 Store 에 들어간 자원은 공통 데이터인데 이는 Actions -> Mutations -> State 에 의해 변화되는 단방향 데이터 흐름을 가진다. BootStrap-Vue 에서 주어지는 href 속성을 사용할 시에 페이지가 새로고침 되어 기존에 있던 Store 정보가 모두 날아간다. 날아가던 코드, href 속성으로 경로지정시 페이지가 새로고침된다. Dev SPA 에서는 Router 를 이용한 페이지 이동이 전제 되므로 , 이 경우 Vuex 에 들어간 Store 정보가 날아간다. 밑은 이를 어찌저찌 해결해보려고 집어넣은 router-link 태그 사용 이다. ..

Axios 사용 시 Zipkin 로그 트레이싱을 위한 wrapAxios

Spring Cloud Sleuth + Zipkin 사용 시 postman 등의 확장 프로그램 에서는 로그 기록이 Zipkin 으로 보내지지만, Axios 사용 시 로그 기록이 Zipkin 으로 보내지지 않는 점에 대한 해결을 기술 Axios 를 하나의 서비스로 Wrapping 시키는 방법을 제공하는데, 이 의존이 zipkin-axios 이다. 더이상 관리되지 않아 github.com/uschmann/zipkin-instrumentation-axios 에 zipkin-instrumentation-axios 로 버전 업이 됬다는데, 사용법은 동일해서 다행이다. zipkin-instrumentation-axios 를 사용해본 결과 zipkin 이랑 충돌이 나서, 이 부분은 공부를 해봐야겠다. 일단 과정으로 ..

Uncaught ReferenceError: regeneratorRuntime is not defined

비동기 처리 방식내용을 babel 이 webpack 을 load 할때 regeneratorRuntime 으로 변환해서 생기는 문제라고 한다. 필요한 모듈이 있는데 이는 babel-polyfill 이다. npm i --save babel-polyfill main.js 를 babel-polyfill 을 이용해서 번들링 하게 해주면 되겠다. // webpack.js module.exports = { // entry: './src/main.js', entry: { app: ['babel-polyfill','./src/main.js'] }, ... }

Java를 시작한지 269일, 블로그를 만든 건 265일차.

책관련 안되던 점들을 해결했다. 한 페이지 한페이지마다 많이 어렵다. 스프링 프레임워크 기본서를 달고 살때도 이랬던 기억이난다. 한 페이지 넘기기가 겁나는 책들이 있다. 사실 이유는 몰라서 이다. 몰라서. 개인적으로는 모르겠다고 손놓고 있는 것보다 알려고 부딪치는 것이 맞다고 생각하고, 그렇게 하나하나 해왔다. 크게 다르지 않을 것같다. 원인이 똑같아서 그렇다. 일단 포기하지않고 끝까지 해보면 된다.

생각모음 2020.12.23

Missing URI template variable for method parameter of type

컨트롤러에 매핑된 URI 템플릿이 알맞지 않다 라는 오류 보통 @PathVariable 에 의해 일어남. 요거를 public interface ProductCompositeService { /** * curl 호스트:포트/product-composite/1 * @param productId * @return */ @GetMapping(value = "/product-composite/{productId}",produces = "application/json") ProductAggregate getProduct(@PathVariable("prodcutId") int productId); } @PathVarible에 맵핑될 경로변수와 파라미터를 잘 지정해주자. public interface ProductCo..

ObjectMapper 에서 Long 이나 Integer 등 Wrapper 타입 맵핑이 안됨

@Entity 클래스에 보통 id 값을 Long 으로 잡는데 이럴때 ObjectMapper가 Long 컨버팅 안됨. 아무튼 안됨 할때가 있다. (String.valueOf() 는..? 했었음.) 이때는 제네릭 타입을 정확히 잡아주는 TypeReference 를 사용하자. @GetMapping("/account/find/{id}") public Map findAccount(@PathVariable Long id){ try { Account account = accountService.processFindAccount(id); Map stringStringMap = new ObjectMapper().convertValue(account, new TypeReference() { }); log.warn(stri..