반응형 *:;전체보기;:*696 swagger Could not resolve reference: Could not resolve pointer 오류 수정 방법 swagger 구현 후 특정 Operation을 클릭 했을 때 사용되는 DTO 객체를 참조할 수 없다는 오류가 발생하곤 합니다. Could not resolve reference: Could not resolve pointer: /definitions/TestDTO - 테스트 DTO does not exist in document swagger에서 등록을 할 때 참조를 할 수 없어서 발생하는 오류인데, 대부분 @ApiModel 이나 @ApiModelProperty 의 value 속성에 특수문자를 입력했기 때문에 발생합니다. 예를들어 '' '/' 와 같은 HTML 태그에 사용되는 특수문자나 '[', ']', '{', '}' 와 같은 JSON 형식에서 사용되는 특수문자를 사용했을 때 발생하게 됩니다. 문제가.. Programing/JAVA 2023. 7. 20. Springboot 2.x + queryDSL 설정 방법 JPA를 사용하게 되면 Query method를 사용하면 간단한 조건의 작업들은 가능하지만 복잡한 쿼리로 작성되어야하는 로직의 경우 한계가 있습니다. 물론 어느정도 가능은 하겠지만 query method의 길이가 엄청나게 길어지겠죠. 이를 보완하기 위해 @Query, JPQL 를 사용하도 합니다. 하지만 문자열을 + 로 연결해야 하며 가독성도 떨어지고, 유지관리에 어려움이 있습니다. 1. Query method List findByKeyUserIdAndKeyAtndYmdBetweenOrderByKeyAtndYmd(String UseId, Date first, Date last); 2. @Query @Query(value = "select count(*)" + " from (" + " select *" +.. Programing/JPA 2023. 7. 18. Factory Method Pattern 팩토리메서드 패턴 GoF 디자인패턴 GoF 디자인 패턴 중 생성패턴의 하나인 Factory Method 패턴에 대해 알아보도록 하겠습니다. 특징 팩토리 메서드 패턴 (Factory Method Pattern)은 객체 생성에 관련된 디자인 패턴 중의 하나로, 객체의 생성을 서브클래스로 분리하여 객체를 생성하는 방식을 추상화 하는데 사용됩니다. 추상화된 팩토리 클래스에 대한 인터페이스를 제공하고, 이를 구체화하여 서브클래스에서 실제 객체를 생성하는 메서드를 구현(캡슐화)합니다. 이를 통해 객체 생성 로직을 클라이언트로부터 분리하고, 유연성과 확장성을 제공합니다. 샘플코드 public interface CommonResponse { Object getData(); } public class JpaResponse implements CommonR.. Programing/Design Patterns 2023. 7. 12. Abstract Factory Pattern 추상팩토리 패턴 GoF 디자인패턴 GoF 디자인 패턴 중 생성패턴의 하나인 Abstract Factory 패턴에 대해 알아보도록 하겠습니다. 특징 추상 팩토리 패턴 (Abstract Factory Pattern)은 객체 생성에 관련된 디자인 패턴 중의 하나로, 관련된 객체들의 팩토리를 생성하기 위한 인터페이스를 제공하며, 이 팩토리를 사용하여 서로 다른 객체들의 그룹을 생성할 수 있습니다. 객체들의 생성로직을 클라이언트로부터 분리하여 객체 간 결합도를 낮추고, 유연성과 확장성을 높이는데 사용됩니다. 샘플코드 Jpa와 Mybatis로 응답을 받는 2개의 추상 객체를 정의하고, 각각 응답에 대한 로직을 구현한 구체적인 객체를 생성하는 팩토리를 만들어보겠습니다. public interface CommonResponse { Object getD.. Programing/Design Patterns 2023. 7. 12. Prototype Pattern 프로토타입 패턴 GoF 디자인패턴 GoF 디자인 패턴 중 생성패턴의 하나인 Prototype 패턴에 대해 알아보도록 하겠습니다. 특징 Prototype Pattern 은 자주 사용하는 객체를 생성해 두고 이를 복사하여 사용하는 패턴을 말합니다. Singleton 패턴과 달리 매번 새로운 객체가 생성이 됩니다. @Scope("prototype") 설정으로 Prototype Pattern 으로 동작하게 할 수 있습니다. 참조 변수 필드의 경우 얕은 복사로 처리 되기 때문에 java.lang.Clonable interface를 implements 받아 깊은 복사로 처리되도록 clone method를 구현해야 합니다. 샘플코드 import java.util.ArrayList; import java.util.List; import java.uti.. Programing/Design Patterns 2023. 7. 11. Singleton Pattern 싱글턴 패턴 GoF 디자인패턴 GoF 디자인 패턴 중 생성패턴의 하나인 Singleton 패턴에 대해 알아보도록 하겠습니다. Singleton Pattern은 Spring bean, @Scope("singleton"), MapStruct Mapper 등 많이 사용되는 패턴 중의 하나입니다. 특징 Singleton 은 객체가 오직 한 개의 인스턴스만 갖도록 하는 패턴입니다. Spring을 예로 들면 @Component 관련 어노테이션을 통해 Spring Container에 단 하나의 객체 인스턴스만 생성을 하고, Inject 관련 어노테이션 (@Autowired, @Resource)을 통해 주입하여 사용하게 됩니다. 단점으로는 상속이 불가능 하기 때문에 다형성을 해치는 개념이고, 전역적인 접근을 허용하기 때문에 정보은닉을 해치는 단점이.. Programing/Design Patterns 2023. 7. 11. Java Refrection API 알짜만 빼먹기 Java의 Refrection API에 대해 알아보도록 하겠습니다. 1. Refrection 이란? 리플렉션의 사전적 의미는 '반사' 이며, Runtime 시점에 동적으로 객체의 정보를 추출하거나 실행할 수 있는 기능을 말합니다. 성능, 디버깅등 많은 단점도 있지만, Spring을 비롯한 여러 유명 라이브러리들에서 사용하는 만큼 강력한 기능이니 사용법을 익혀두도록 합시다. 2. Refrection의 단점 2.1 성능 오버헤드 위에서 말씀드린데로, Refrection은 Compile 시점이 아닌 Runtime 시점에 동적으로 객체에 접근하기 때문에 오버헤드가 발생 할 수 있습니다. 오버헤드란 프로그램의 실행시점에 동적으로 코드를 실행해야하는 경우 추가적인 시간, 메모리, 자원등이 사용되는 현상을 말합니다... Programing/JAVA 2023. 7. 10. static 메소드, 변수의 Thread safe, unsafe 1. static 자주, 반복적으로 사용하는 메소드를 개발할 때 고민해봐야 하는 것이 static의 사용입니다. static 의 경우 new 키워드로 생성하여 Heap 에 저장되는 일반 객체와 달리, GC의 대상이 되지 않는 Data 영역에 저장됩니다. 이는 어플리케이션이 종료될 때 까지 메모리에서 해제되지 않음을 의미 합니다. static 은 잘 사용하면 매우 유용하지만, 잘못 사용하거나 남발하게 되면 어플리케이션의 퍼포먼스에 악영양을 미치기 때문에 적절하게 사용해야 합니다. link : https://aljjabaegi.tistory.com/636 Java GC Gargabe Collection 알짜만 빼먹기 / 알고리즘 / 종류 / 모니터링 VisualVM Java GC Garbage Collect.. Programing/JAVA 2023. 6. 26. Jenkins & Git Lab Gradle Procject CI/CD 구성 방법 Jenkins & Git Lab Gradle Project CD/CI 구성 방법에 대해 알아보도록 하겠습니다. 설치나 설정방법은 이전 포스팅을 참고해주세요. Git Lab이 설치된 서버의 OS는 CentOS 입니다. 그리고 젠킨스가 설치된 서버에 자동배포까지 진행하는 방법입니다. Link : https://aljjabaegi.tistory.com/635 Jenkins Gradle, Maven build plugin 설치 Jenkins Gradle Maven build plugin 설치 이전 포스팅에서 CI / CD 에 대한 설명과 설치방법, SVN 연동방법에 대해 알아보았습니다. Link : https://aljjabaegi.tistory.com/630 CI /CD 의 개념, 등장한 이유, 대표 플랫폼 .. 알짜정보/IT정보 2023. 6. 8. getReader() has already been called for this request 해결 방법 java.lang.IllegalStateException: getReader() has already been called for this request 의 원인과 해결방법을 알아보겠습니다. 원인 위의 Exception은 request.getReader()를 한번 이상 사용할 때 발생합니다. request.getReader() 를 사용하게 되면 request body 를 읽기위한 스트림을 반환하고, 읽는동안 내부적으로 포인트를 사용하여 읽은 위치를 기억하게 됩니다. 처음 다 읽은 후 두번째 읽을 때는 이미 포인터가 body의 마지막부분을 기억하고 있기 때문에 읽을 데이터가 없다고 판단하게 되는 것이죠. 예를들어 Interceptor에서 아래와 같은 코드로 body의 데이터를 조회한다고 할 때 이미 인터셉.. Programing/JAVA 2023. 5. 25. JPA Date or Timestamp 저장 시 유용한 어노테이션 JPA Date or Timestamp 저장 시 유용한 어노테이션에 대해 알아보겠습니다. 1. @Temporal @Temporal 은 날짜, 시간 타입 매핑에 필수 어노테이션 입니다. TemporalType.DATE, TemporalType.TIME, TemporalType.TIMESTAMP 3가지가 있으며 각각의 컬럼 타입에 따라 설정하시면 됩니다. 2. @CreationTimestamp 신규저장 시 자동으로 현재 시간을 넣어주는 어노테이션 입니다. @Embeddable @EmbededId의 경우 정상동작 하지 않음에 주의 해야 합니다. 엔티티 클래스 필드에만 적용합니다. 3. @UpdateTimestamp @CreationTimestamp와 비슷하게 수정 시 현재 시간을 자동으로 업데이트 해주는데 사.. Programing/JPA 2023. 5. 16. JPA 에서 entity를 삭제하는 여러가지 방법과 차이 JPA에서 entity를 삭제하는 방법은 여러가지가 존재합니다. 각각의 삭제하는 방법의 내부코드와 사용방법, 차이점을 알아보도록 하겠습니다. 1. delete delete method를 사용하여 entity를 삭제할 수 있습니다. 1.1 how to use? repository.delete(entity); entity를 전달하므로써 해당 entity를 삭제하게 됩니다. 1.2 delete 구현 코드 참고 @Override @Transactional @SuppressWarnings("unchecked") public void delete(T entity) { Assert.notNull(entity, "Entity must not be null!"); if (entityInformation.isNew(ent.. Programing/JPA 2023. 5. 4. Firebase 환경 설정, 구축 및 구현 방법, 앱 푸시 메시지 보내기 Firebase는 Android 및 ios 에 구분 없이 알림을 전달할 수 있는 구글의 플랫폼 입니다. Firebase 환경을 구축하고 Java 서버를 구현하여 보겠습니다. 아래의 Link를 클릭하여 Firebase site로 이동합니다. 1. Firebase 환경 설정 Link : https://firebase.google.com/ Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com 시작하기를 클릭합니다. 프로젝트 만들기를 클릭합니다. 프로젝트 이름을 지정하고, 약관동의 등을 체크 후 계속 버튼을 클릭합니다. 애널리틱스 사용설정을 하고 계속을 클릭합니다. 새로운 애널리틱스를 생성합니다.. Programing/JAVA 2023. 4. 21. Springboot Quartz clustering 적용방법, spring batch, shedlock quartz를 사용하여 schedulering을 하는 어플리케이션을 이중화 하게 되면, 복수 개의 scheduler가 동작하기 때문에 문제를 야기 할 수 있습니다. 그래서 Clustering을 적용하여 하나의 scheduler만 동작하게 처리해야 합니다. 그 방법중에 하나가 Quartz clustering이고 shedlock 등의 라이브러리도 DB를 사용한 Clustering을 제공합니다. Quartz clustering 적용방법 그럼 이제 quartz에 clustering을 적용하는 방법을 알아보도록 하겠습니다. org.quartz.simpl.RAMJobStore 는 default 로 메모리를 사용한 스케쥴링이고, org.quartz.impl.jdbcjobstore.JobStoreTX 가 DB를 활용한.. Programing/JAVA 2023. 4. 18. JPA Query Methods 정리 오늘은 JPA에서 간단하게 우리가 원하는 데이터를 조회 할 수 있는 방법중에 하나인 Query Methods 에 대해서 알아보도록 하겠습니다. Keyword Usage JPQL Where and findByColumne1AndColumn2(col1, col2); select ... where column1 = col1 and column2 = col2 Where or findByColumn1OrColumn2(col1, col2); select ... where column1 = col1 or column2 = col2 Distinct findDistinctByColumn1(col1); select distinct ... where column1 = col1 Is, Equals findByColumn1Is.. Programing/JPA 2023. 4. 13. 이전 1 2 3 4 5 6 ··· 47 다음 💲 추천 글 반응형