개발중/Spring92 @JsonTypeInfo 활용 사례와 예제 @JsonTypeInfo란?@JsonTypeInfo는 Jackson 라이브러리에서 다형성(Polymorphism) 직렬화와 역직렬화를 지원하기 위해 사용되는 애너테이션입니다.객체지향 프로그래밍에서 상속 구조를 가지는 클래스 계층이 있을 때, 상위 클래스 타입으로 선언된 필드에 여러 하위 클래스의 객체가 저장될 수 있습니다.이러한 상황에서 객체를 JSON으로 직렬화할 때, 단순히 필드 값만 기록하면 역직렬화 시 원래의 구체적인 클래스 정보를 알 수 없습니다.@JsonTypeInfo는 이 문제를 해결하기 위해, JSON 데이터에 타입 정보를 포함시켜 저장함으로써, 역직렬화 시 원래의 하위 클래스로 복원할 수 있도록 도와줍니다.주요 속성은 다음과 같습니다:use: 타입 식별자(strategy)를 지정합니다.예.. 개발중/Spring 2025. 3. 17. package javax.xml.bind does not exist 해결 요즘 대부분의 프로젝트들은 jdk 11 / 17 버전을 사용하는데A 프로젝트는 JDK 1.8 이었다. 오랜만에 A 프로젝트를 오픈하니 아래와 같이 bind 패키지를 찾지 못했다. package javax.xml.bind does not exist 인텔리 제이의 jdk 설정을 확인하니 17 로 세팅되어있는 부분들도 있었다. 그 부분들을 1.8 으로 변경하니 해결 되었다. 그래도 안된다면 ,,, 캐시를 무효화 ( File > Invalidate Caches / Restart ) 시켜보자. 개발중/Spring 2024. 12. 11. Java: MAC Address 조회하기 예제 IP 구하는 메서드 구현 public static String getIpAddress(HttpServletRequest request) { String ipAddress = ""; try{ if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) { return ipAddress = request.getRemoteAddr(); } }catch (Exception e){ e.printStackTrace(); }finally { return ipAddr.. 개발중/Spring 2024. 12. 10. Spring Cache 이해하고 사용하기: 성능 최적화를 위한 데이터 캐싱 도구 Spring Cache란Spring Cache는 캐싱을 쉽게 구현할 수 있도록 하는 Spring의 추상화 레이어입니다. 이를 통해 애플리케이션은 특정 데이터를 메모리, 디스크, Redis, Ehcache 등 다양한 캐시 저장소에 저장하고 재사용할 수 있습니다. Spring Cache 주요 개념캐싱 메커니즘캐시 저장소: 데이터를 임시로 저장하는 공간(예: ConcurrentHashMap, Redis).캐시 키: 데이터를 식별하기 위한 고유 키.캐시 값: 캐시에 저장된 실제 데이터. 주요 어노테이션Spring Cache는 주로 어노테이션 기반으로 작동한다. @EnableCaching캐시 기능을 활성화한다.보통 Spring Boot의 메인 클래스나 구성 클래스에 선언한다.@SpringBootApplicatio.. 개발중/Spring 2024. 11. 19. Spring Project 의 MyBatis 쿼리를 Console 에 찍는 설정 (log4j2) 의존성 추가 - 로그 관련 라이브러리를 추가합니다. org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 log4j2 파일 - resource 하위에 log4j2.xml 파일을 생성합니다. - 파일 안에 아래와 같이 코드를 작합니다. DataBase 접속 정보에 대한 수정 변경 전 spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/binsoo_db?serverTimezone=UTC&characterEncoding=UTF-8 spring.datasource.hikari.username.. 개발중/Spring 2023. 12. 30. Spring 환경에서 프로파일 별 효율적 코드 관리 전략 안녕하세요, 여러분! 오늘은 Spring 환경에서 프로파일(Profile)을 활용하여 코드를 효율적으로 관리하는 전략에 대해 이야기하려 합니다. 특히, 코드 유틸리티 클래스를 활용하여 다양한 환경(로컬, 프로덕션 등)에 맞게 유연하게 설정을 관리하는 방법을 중점적으로 다룰 것입니다. 공통적인 내용의 중앙화 개발 과정에서 중복되는 코드 관리는 큰 골칫거리가 될 수 있습니다. 이를 해결하기 위해 CodeUtils라는 추상 클래스를 정의했습니다. 이 클래스는 공통적으로 사용되는 코드 목록(initCodeList)을 정의하고, 실제 코드를 조회하는 getCode 메소드를 추상 메소드로 선언함으로써, 구체적인 구현을 상속받는 클래스에 위임합니다. @Component public abstract class Code.. 개발중/Spring 2023. 12. 8. SocketException의 수수께끼: 첫 번째 API 호출에서만 왜 실패할까? ( retrofit java.net.socketexception connection reset ) 우리 프로젝트에 내가 Retrofit 설정을 했는데, 이상한 현상 (?) 이 나타났다. 프론트 개발자분께서 이슈를 전달해주기를 아래와 같이 ... 컴퓨터를 껏다가 키고 최초로 웹 프로젝트를 기동시 아래와 같은 에러가 나요. 근데 2, 3, 4 ... 번째는 이런 에러가 안나요. !!!!!!!!! 😡 참고로 java.net.SocketException: Connection reset by peer 이라는 예외는 네트워크 연결 중에 원격 피어(peer)가 연결을 강제로 닫았음을 나타냅니다. 의심할 수 있는 상황은 아래의 상황들이었습니다. 의심해볼 만한 사항 테스트 결과 원격 서버가 과부하 상태거나 다운되어 있음 개발 서버이고 부하 상태가 전혀 없었기 때문에 제외 네트워크 이슈가 발생하여 데이터 전송이 중단됨.. 개발중/Spring 2023. 10. 6. @RequiredArgsConstructor 와 @Autowired 의 차이점 @RequiredArgsConstructor와 @Autowired는 둘 다 Spring Framework와 관련된 주석(annotations)이지만, 주로 Lombok과 Spring Framework에서 사용되며, 각각의 목적과 작동 방식이 다릅니다. RequiredArgsConstructor (Lombok) 이 주석은 Lombok 라이브러리에서 제공합니다. 클래스 내에 final 또는 @NonNull로 선언된 필드에 대한 생성자를 자동으로 생성해 줍니다. 이렇게 생성된 생성자는 필요한 의존성을 주입 받는 데 사용될 수 있습니다. Spring에서 이 생성자를 사용하여 생성자 기반의 의존성 주입을 할 수 있습니다. @RequiredArgsConstructor public class MyService { p.. 개발중/Spring 2023. 10. 6. 에러 - Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found Inspection info: Reports resolution problems in a Maven model org.springframework.boot maven 버전을 확인하고 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-maven-plugin 버전을 찾아서 추가한다. 2.7.13 인식하지 못하는 에러가 해결되었다 개발중/Spring 2023. 9. 5. [Spring] JSch 를 활용해 특정 서버에 파일 업로드하기 특정 서버에 파일 업로드하기 이 코드는 JSch 라이브러리를 사용하여 SFTP 프로토콜로 원격 서버에 접속하여 파일을 다운로드하는 기능을 구현한 것입니다. JSch는 Java에서 SFTP, SCP, SSH 등을 지원하는 라이브러리로, 이를 사용하여 원격 서버로 접속하고 파일을 다운로드합니다. JSch 객체를 생성합니다. JSch jsch = new JSch(); SFTP 서버에 접속하기 위한 Session 객체를 생성합니다. Session session = jsch.getSession("root", "210.118.213.148", 22); 호스트 키 체크를 하지 않도록 설정합니다. (보안상 권장하지 않습니다) session.setConfig("StrictHostKeyChecking", "no"); SF.. 개발중/Spring 2023. 7. 26. [Spring] JSch 를 활용해 특정 서버에서 파일 가져오기 특정 서버에서 파일 가져오기 이 코드는 JSch 라이브러리를 사용하여 SFTP 프로토콜로 원격 서버에 접속하여 파일을 다운로드하는 기능을 구현한 것입니다. JSch는 Java에서 SFTP, SCP, SSH 등을 지원하는 라이브러리로, 이를 사용하여 원격 서버로 접속하고 파일을 다운로드합니다. JSch 객체를 생성하고 SFTP로 접속할 세션을 설정합니다. JSch jsch = new JSch(); Session session = jsch.getSession("root", "111.111.111.111", 22); session.setConfig("StrictHostKeyChecking", "no"); session.setPassword("1234"); session.connect(); SFTP 채널을 열어.. 개발중/Spring 2023. 7. 26. Swagger 2 와 Swagger 3의 차이점 알아보기 Swagger 2 와 Swagger 3의 차이점 알아보기 Swagger는 API 문서를 자동화하고 시각화하기 위한 도구입니다. Swagger 2와 Swagger 3 (OpenAPI 3)는 주로 스펙 및 기능 차이에 대한 업데이트가 있습니다. 이 차이점을 간략하게 살펴보겠습니다. 스펙 버전 Swagger 2는 Swagger 스펙 2.0을 따릅니다. Swagger 3 (OpenAPI 3)는 OpenAPI 스펙 3.0.x를 따릅니다. 구조 변경 Swagger 3에서 구조와 속성 이름이 변경되어 더 명확하고 간결해졌습니다. 새로운 데이터 유형 및 스키마 Swagger 3에서는 oneOf, anyOf, not 등의 추가 스키마 키워드를 사용할 수 있습니다. 이를 통해 API에서 다양한 유형의 데이터를 더 잘 정의.. 개발중/Spring 2023. 4. 4. 이전 1 2 3 4 ··· 8 다음