no image
Spring RestTemplate - 공공api SERVICE KEY IS NOT REGISTERED ERROR
문제 SERVICE ERROR SERVICE_KEY_IS_NOT_REGISTERED_ERROR 30 ,[Access-Control-Allow-Origin:"*", Content-Type:"text/xml;charset=UTF-8", Content-Length:"229", Date:"Thu, 24 Oct 2024 15:24:30 GMT", Server:"NIA API Server"]>기상청 단기예보 api를 사용하는데 위와 같은 응답이 왔다. api에서 제공하는 에러 코드이다. 공공데이터 API는 위와 같이 인코딩 키와 디코딩 키를 둘 다 주고 잘 동작하는 키를 사용하라고 한다. 접근1. 인코딩키와 디코딩키를 둘 다 사용해 본다. => 실패 2. 키가 전송되면서 바뀌나?String apiUrl = ..
2024.10.25
no image
Spring Data JPA - flush(sql error 1062 sqlstate 23000)
예시)Vehicle 테이블idbigintPrimary key (Vehicle ID)license_platevarchar(255)Vehicle's license plate numberbrandvarchar(255)Manufacturer of the vehiclemodelvarchar(255)Vehicle modelyearintYear of manufacture Engine 테이블idbigintPrimary key (Engine ID)engine_numbervarchar(255)Engine serial numberengine_modelvarchar(255)Engine modelstatusenum('error', 'running', 'stopped')Current engine statusvehicle_idbi..
2024.10.20
no image
Error) Spring Security @PreAuthorize/@Secured NPE
환경Spring Boot 3.3.3Spring Security 6.3.3 문제@PreAuthorize/@Secured - NullPointerException//WebSecurityConfig.java@Configuration@EnableWebSecurity@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true)@RequiredArgsConstructorpublic class WebSecurityConfig { ....}//UserController.java ...uesrService 주입.. @PostMapping(value = "/master/create", consumes = MediaType.APPLICATION_FO..
2024.10.15
no image
Spring Data JPA - Cascade, orphanRemoval 차이
관련 포스팅2023.07.13 - [Spring/JPA] - 스프링) JPA Entity option 지연 로딩/영속성 전이/고아 entity삭제 (23-07-12) 스프링) JPA Entity option 지연 로딩/영속성 전이/고아 entity삭제 (23-07-12)velog에서 이전한 글 입니다. 2023.07.13 - [spring] - 스프링) JPA Entity 연관관계 - 외래 키 주인 (23-07-11) 지난 포스팅에 이어 JPA Entity Option FetchType EAGER/LAZY (지연 로딩) public @interface ManyToOne{ ... FetchType fetccornpip.tistory.com지우고자 하는 데이터가 다른 테이블에서 FK로 사용 중이라면 지울 수..
2024.09.24
no image
Spring Security Session 인증 - REST API login
VersionSpring boot 3.3.3Spring Security 6.3.3JWT 와 Session구현에 따라 다를 수 있지만 일반적으로 아래와 같이 의미한다. JWT는 stateless다. 서버가 인증 상태를 가지고 있지 않는다.Session은 stateful이다. 서버가 인증 상태를 가지고 있는다. 많은 다중 접속이 있는 서비스라면, 서버가 인증 상태를 가지고 있는 것이 부담이지만,접속하는 사람이 정해져 있다면(관리자, 현장 작업자 등) Session 방식을 채택해도 적절할 수 있다.Security Session REST API Login 구현Spring Security로 Session Login을 구현해보자.Filterchain 흐름이 다음 블로그에 잘 정리되어있다.https://gngsn.t..
2024.09.07
no image
Spring Stomp로 보는 직렬화/역직렬화
Spring Stomp로 보는 직렬화/역직렬화위와 같은 프로젝트 구성에서 Stomp 직렬화 역직렬화 예시를 보자.테스트 환경은 서버가 시작할 때 StompClient를 생성하고 연결한다.//StompClientConnect.java@Component@Slf4j@RequiredArgsConstructorpublic class StompClientConnect implements ApplicationRunner { @NonNull private CustomStompSessionHandler customStompSessionHandler; @Override public void run(ApplicationArguments args) throws Exception { WebSo..
2024.07.05
no image
Spring) Client와 WebSocket Server 사이를 중계하기
client와 웹소켓 서버 사이를 중계하기 = 웹소켓 서버이면서 클라이언트 역할을 수행한다. server1과 server2를 어떤 방법으로 어느 타이밍에 연결할지에 고민이 많았다. 방법에 있어서는 server2의 WebSocket Server는 다룰 수 없고 server2는 Stomp 프로토콜을 사용하고 있지 않은데 server1을 Stomp Client로 server2와 연결을 시도하며 삽질했고 타이밍에 있어서는 요청을 트리거로 server1과 server2를 연결하고 작업완료 시 연결을 종료하려 했으나 잘 안 됐었다. 결국, 구현은 server1과 server2의 ws연결은 spring websocket stomp 가 아닌 java-websocket 라이브러리를 사용했고 implementation '..
2023.12.04
no image
spring mapstruct
mapstructdto entity 사이를 변환하는 코드를 생성해 주는 패키지다.//build.gradledependencies {... compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' //mapstruct를 lombok 보다 뒤에 implementation 'org.mapstruct:mapstruct:1.5.5.Final' annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'...} 주의getter, setter, builder 등 lombok을 사용한다면 lombok 코드 생성이 먼저 실행된 후에 mapstruct가 동작..
2023.10.15
no image
spring lombok SuperBuilder
SuperBuilder 생성 코드 @SuperBuilder @ToString public class BuilderTestDto { private String one; private String two; } ====================== @SuperBuilder @ToString(callSuper = true) public class BuilderTestDto2 extends BuilderTestDto{ private String three; } 부모와 자식 둘 다 붙여야하고 사용했을 때 컴파일 된 코드는 아래와 같다. public class BuilderTestDto2 extends BuilderTestDto { private String three; protected BuilderTestDt..
2023.10.08