본문 바로가기

Spring

(72)
스프링 부트 @RequiredArgsConstructor 애노테이션 @Slf4j @Controller @RequestMapping("/api/v1/data/invalid_request/") @RequiredArgsConstructor public class InvalidRequestController { private final InvalidRequestService invalidRequestService;필드 DI를 제발좀 쓰지 말라고 하도 뭐라고 해서 컨스트럭터 di로 바꾸고 있는데 final로 선언을 해주면 그 부분을 자동화 해주는 애노테이션이 있다는 것을 알게 되었습니다. 위와 같이 씁니다. 그러면 @Autowired도 안써도 돼고 constractor도 없어도 됩니다. 그런데 final을 꼭 붙여야 합니다. 안그러면 null나와욤
jpa app 운영 배포 전략 jpa app 운영 배포 전략 jpa로 앱을 만들고 백엔드 서버를 운영 할 때 db에 컬럼이 추가 되는 경우가 있습니다. jpa같은 경우는 서버가 뜰 때 db하고 entity하고 매핑을 한 다음에 뜹니다. 예를들면 entity에 phone이라는 필드가 있지만 db에는 없는 경우는 매핑이 되지 않아서 서버가 뜨지 않습니다. 그래서 jpa에는 hibernate.ddl-auto에 update라는 옵션이 있는데 prod에는 보통 update는 해놓지 않고 validate로 해놓습니다. 이 옵션을 update로 해놓고 수정한 서버를 재부팅 하면 entity하고 db의 field와 비교를 해서 db의 field에 alter를 해서 컬럼을 추가합니다. 왠지 이야기만 들어도 문제가 생길 것 같지 않으신가요? 컬럼이 추..
WebFlux test get, get with param, post, post with param TransferController.java@Slf4j @RestController @RequestMapping("/api/v1") public class TransferController { private TransferService transferService; public TransferController(TransferService transferService) { this.transferService = transferService; } @GetMapping("/transfer") Mono getTransfer(ServerRequest req) { return ok().body(fromObject(req.pathVariable("name"))); } @GetMapping("/transferp") ..
spring boot를 띄우고 특정 url로 call을 보내면 api call해서 db에 저장하는 코드 1.특정 controller가 실행 되었을 때해당 controller로 들어온 request body를 읽어서 만든 스프링부트 앱을 콜하면스프링부트앱이 네이버에 콜을 보내서받아온 값을json으로 바꿔서값을 뽑아서pojo에 저장하고그걸 repository를 이용해 db에 저장
json data jpa를 이용해 db에 넣기 .feat naver blog search api 거기서 bloggername만 뽑아서 SearchResult table에 넣기1. string을 JsonNode로 mapping하기2. jpa domain mapping하기- @Entity, @Id
Optional .orElseThrow(Function) 사용법 없으면 에러처리 하고 싶을 때 쓴다. // 없으면 여기에서 error를 뱉어야 한다. List ohlcvs = opt.orElseThrow(() -> new NoResultException("ohlcv result set null")); end.
spring boot cache 넣기 Spring Boot에 Cache넣기 spring-boot-starter-cache만 import 하면 ConcurrentHashMap이 캐쉬 클래스가 된다.이 클래스는 expire를 수동으로 해줘야 한다.그래서 expire time을 줄 수 있는 caffein cache를 쓰는 것. pom.xml org.springframework.boot spring-boot-starter-cache com.github.ben-manes.caffeine caffeine 2.6.2 main(){@SpringBootApplication @EnableCaching public class ChartDataServer extends SpringBootServletInitializer {} ChartDataService.jav..
jpa에서 복수키 만들기(key 2개), 복수키를 사용할 경우 길이 문제 JPA에서 복수키 만들기@IdClass(OhlcvHour.OhlcvHourKey.class) public class OhlcvHour { @Id private String currencyPair; @Id private LocalDateTime timeToHours; @EqualsAndHashCode @Embeddable static class OhlcvHourKey implements Serializable { @Column(columnDefinition = "varchar(10)") private String currencyPair; @Column(name = "TIME_TO_HOURS", nullable = false) private LocalDateTime timeToHours; } }복수키를 만들..