@Configuration @RequiredArgsConstructor public class SimpleTestConfig { private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; private final EntityManagerFactory emf; private final DataSource dataSource; private AtomicLong myId = new AtomicLong(); @Bean public Job batchJob200() { return jobBuilderFactory.get("partitioningJob") .incrementer(new Run..
JDBC 계열 Reader로 조회를 했을 때, 다른 값은 다 제대로 달라붙는데 ID만 제대로 달라붙지 않는 경우를 드디어 해결했다. @Builder @Entity @Data @NoArgsConstructor @AllArgsConstructor public class Customer { @Id @GeneratedValue @Column(name = "customer_id") private Long id; private String firstName; private String lastName; private LocalDate birthDate; } JPA를 위해서 다음과 같이 셋팅을 했다고 가정해보자. 이 때, DB의 Column 명은 customer_id인데, 객체의 필드는 id다. 그런데 이 때 Jdb..
상황1 DTO로 JPA에서 값을 조회한 것을 BODY에 바로 응답으로 내려주려고 할 때 "No serializer found for class 블라블라"에러가 발생했다. DTO 객체 값을 JSON으로 변경해주는 것이 안되는 상황으로 먼저 이해를 하면 된다. 해결1 DTO에 값은 생성자를 통해 제대로 셋팅이 되어있었다. 문제는 DTO에서 JACKSON 라이브러리를 통해 변경되는 시점이었다. DTO의 GETTER가 하나도 만들어지지 않은 상황이라 JSON이 객체를 적절히 맵핑해서 넘겨줄 수 없어서 에러가 발생했었다. 이 때의 해결책은 DTO 클래스 위에 @GETTER or @DATA를 두면서 해결되었다.
정상적으로 값을 넣어주었는데 @RequestBody 바인딩이 안될 때가 있다. 이 때 바인딩 될 파라메터의 기본 생성자가 있는지 확인해야한다. 기본 생성자가 없으면 @RequestBody를 통해 값이 바인딩 되지 않는다.
Spring MVC에서 @GetMapping, @RequestMapping으로 필요한 URL로 컨트롤러가 잘 호출된 것이 @Slf4j 같은 로거로 잘 보인다고 가정하자. 이 때, return "viewName"을 해서 뷰 랜더링을 하려고 한다. 이 때, 아무 오류 없이 뷰 랜더링이 되지 않는 경우가 있다. 이 경우는 타임리프 의존성 주입이 안되어있을 가능성이 높다. 타임리프 의존성 주입이 안되어있으면, ThymeLeafViewResolver가 등록되어 있지 않기 때문에 뷰렌더링이 되지 않는다.