본문 바로가기

Java/Spring

(5)
@JSONSETTER 이용 중 삽질 기존 코드 @Data @NoArgsConstructor public class MetaData { ... @JsonSetter("attributes") public void setCategory(List attributes) { Class clazz = this.getClass(); for(Map attribute : attributes){ String traitType = (String) attribute.get("trait_type"); String traitValue = (String) attribute.get("value"); try { Field field = clazz.getDeclaredField(traitType.toLowerCase()); field.setAccessible(true); ..
[JPA] @Query update문 (Not supported for DML operations 해결) update retyrn 받는법 여지껏 mybatis만 사용하다가 이번에 프로젝트를 진행하면서 JPA를 사용하기로 결정했다. JPA에선 @DynamicUpdate 를 이용해서 dirty checking을 하며 바뀐 값만을 update 해준다. 수정 시간도 자동으로 넣어줄 수 있어서 매우 편리하고 깔끔하다. 하지만 dirty check를 사용하기 때문에 mybatis처럼 return 값을 받을 수가 없다. 실패했는지 성공했는지, update가 진행 됐는지, 진행이 됐다면 몇 행이 수정됐는지 등을 알 수가 없다. 하여 이부분을 찾다가 dirtycheck로는 무리가 있다고 판단. 쿼리를 직접 짜보기로했다. ========= 본론 ========== public interface UserProfileRepository extends JpaRe..
yaml & * &로 변수 *로 갖다 쓰기
spring 2로 바꾸면서 Spring security로 인한 로그인창 없애고 custom 로그인 창으로 대체하기 1. Spring security 때문에 로그인 페이지가 뜬다. 이걸 끄고 custom 로그인 페이지를 사용해보자 SecurityConfig를 만들어준다. 그안에서 ignore.antMatcher("경로") 로 spring security를 무시해주자 참고할 만한곳 : https://gs.saro.me/dev?page=20&tn=480 2. viewControllerRegistry를 해준다. config 파일에 처음 들어오면 가게되는 페이지를 설정한다. registry.addViewController("/").setViewName("forward:/login"); // 컨트롤러에서 받을 주소 registry.setOrder(Ordered.HIGHEST_PRECEDENCE); super.addViewCon..
[Spring] 스케쥴러 만들기 스프링에서 @Scheduled 어노테이션을 이용해 일정 시간마다 프로그램을 돌리는 방법이다 요약 main에 @EnableScheduling 추가 -> 스케쥴러에 @Scheduled(크론식) 추가 =끝= 아래는 설명이다 1. 일단 main 쪽에서 Schedule을 사용 가능하게 만들어줘야된다 @EnableScheduling을 추가해주자 2. 하위 패키지에 스케쥴러를 작성해준다. 여기서는 CustomerScheduler.java를 새로 만들어서 관리했지만 그냥 다를 컨트롤러 안에 넣어도 작동 하긴 할거 같다. 위 사진 처럼 하면 5초마다 scheduller()를 돌면서 로그를 출력해준다. ++스프링 크로식은 필드가 6개여야한다 일반 크론식을 사용하면 에러가 나니 삽질하지 말자! 크론 설명 (초 분 시 일 월..