반응형
[Spring Boot] Simple Cache, EhCache(v3.10.8) 간단 테스트 해보기
공부/Spring2024. 7. 22. 15:31[Spring Boot] Simple Cache, EhCache(v3.10.8) 간단 테스트 해보기

캐시란?- 데이터나 값을 미리 복사해놓는 임시 저장소- 시스템 성능을 향상시키기 위한 메커니즘 - 캐시에 데이터를 저장하고 엑세스하는 프로세스이다 캐시를 사용해야 하는 이유① 데이터 접근이 빠르고 비용이 저렴② 애플리케이션 성능이 향상됨③ 응답이 빠름④ 메모리에 데이터 접근하는게 DB에서 가져오는 것보다 항상 빠름⑤ 비용이 많은 백엔드 요청이 줄어듦 캐시에 데이터를 미리 복사해 놓음으로써 처리/접근 시간(비용) 없이 빠른 속도로 데이터 접근할 수 있다 언제 사용- 자주 변경되지 않는 데이터- 원본 데이터에 접근/처리 시간이 오래 걸리는 경우 캐싱 종류 ① 인메모리 캐싱 (ex. Redis)② 데이터베이스 캐싱 (ex. hibernate 1차 캐시)③ 웹 서버 캐싱 - HTTP Cache : 브라우저/프록..

공부/Spring2024. 6. 26. 21:36Spring boot 3.x + Security 6.x + @WebMvcTest 회고

상세 버전- spring boot 3.2.0- security 6.2.0 상황, 원인 분석security 추가하면서 잘 돌아가던 @WebMvcTest가 시원하게 403 Forbidden 에러 출력하였다 @WebMvcTest(value = MemberController.class)class MemberControllerWebMvcTest { @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; @MockBean private MemberUseCase memberUseCase; @Test void 회원가입_성공하면_아이디값을_반환한다() throws Exception { ..

[Spring] AOP 용어 정리
공부/Spring2023. 8. 22. 19:25[Spring] AOP 용어 정리

목차 AOP (Aspect Oriented Programming) 관점 지향 프로그래밍은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 만한다. 예로들어 핵심적인 관점(core concerns)은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 로깅, 실행시간 측정, 시큐리티, 트랜잭션 등이 될 수 있다. A Concern is a term that refers to a part of the system divided on the basis of the functionality 관심사는 기능에 따..

공부/Spring2022. 6. 20. 17:38[JPA] Date 타입 포맷 맞춰주는 @Temporal

정리 - Date 타입의 필드를 Response 응답할때 Formatting 해주기 위해 @JsonFormat 을 사용함 @JsonFormat(pattern = "yyyy-MM-dd") - 문제) 그런데 startDate, endDate 날짜 각각 -1 일씩 된 날짜 가져옴 실제) 이벤트 1 / 2021-12-08 ~ 2021-12-16 @JsonFormat) 이벤트 1 / 2021-12-07 ~ 2021-12-15 🤔 - 그래서 아래와 같이 @Temporal 으로 수정하니 정상적으로 날짜 출력함 ( yyyy-MM-dd 형태) @Id @Column(name = "start_date") @Temporal(TemporalType.DATE) private Date startDate; @Id @Column(na..

공부/Spring2022. 6. 19. 22:48[JUnit] org.junit.runners.model.InvalidTestClassError: Invalid test class

개요 udemy 에서 junit test 인강 강의 듣던 중 해당 에러 발생 org.junit.runners.model.InvalidTestClassError: Invalid test class (이하 생략) 해결 방법 @Test 의 import 가 틀렸음 import org.junit.Test; ✨ //import org.junit.jupiter.api.Test; 💣참고 https://stackoverflow.com/questions/24319697/java-lang-exception-no-runnable-methods-exception-in-running-junits

공부/Spring2022. 6. 12. 11:55[ERROR] org.springframework.oxm.UncategorizedMappingException: Unknown JAXB exception

개요 spring batch clone project 테스트 하면서 공공 API xml 데이터 parsing 테스트 진행 dto 객체에 mapping 처리 해주는 과정에서 jaxb 에러 발생 에러 Caused by: org.springframework.oxm.UncategorizedMappingException: Unknown JAXB exception; nested exception is com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 13 counts of IllegalAnnotationExceptions (생략) 클래스에 동일한 이름 "year"을(를) 사용하는 속성이 두 개 있습니다. this problem is related to the fo..

공부/Spring2022. 4. 20. 11:12[Spring] @RequestMapping pathvariable regex - exclude word , 표현식 사용해서 path에 특정단어 들어 올 경우 제외시키기

문제 페이지 작업 중에 URL이 겹치는 부분이 발생해서 원하는 view 로 이동하지 않는 것을 확인함 /* # 예시 - /log/index 입력시 로그와 관련된 index 페이지로 가기 원하지만 - (문제) 아래에 PathVariable({service}) 부분에 다 걸려버림 */ @RequestMapping(/{service}/index) // log 단어를 제외하고 여기에 다 걸렸으면 좋겠음 public String index(){ return "index" } @RequestMapping(/log/index) //내가 원하는 곳 public String logPage() { return "index" } 정보 찾아보니 표현식으로 필터링 가능하다는 것을 확인함 ! 해결 정규 표현식(regex) 사용해..

공부/Spring2022. 4. 7. 21:48[Hibernate] DBMS custom function 을 ORM에서 호출하는 방법

개요 ORM 으로 Hibernate를 맨땅에서 시작한지 3개월 차, 요구사항 기능 구현하는데 custom function이 필요하게 되었다. 상세한 내용은 생략하고 설정 방법과 Criteriabuilder로 어떻게 function을 사용해서 호출했는지에 대해서만 기록함 1. Mysql function 생성 Mysql v8.0에는 regexp_replace가 있지만, Mysql5.7에는 없어서 인터넷에 굴러다니는 create function문 수정해서 사용 regexp_replace_cast() 로 특수문자/영문 지우고 BIGINT형 값 리턴하도록 함.(아래 링크 참조) https://dev-ljw1126.tistory.com/123?category=1001277 2. Hibernate 설정 import ..

공부/Spring2022. 3. 6. 23:03[에러] java.lang.NoClassDefFoundError:javax/xml/bind/JAXBException

- 자바 ORM 표준 JPA 프로그래밍 공부 외에 Spring boot Hibernate 로 파일럿 프로젝트 수행시 해당 에러 발생 - jaxb 라이브러리 추가해주면 됨 ( jdk 11버전 사용 ) - maven repository에서 라이브러리 찾으면 됨 ( https://mvnrepository.com/ ) javax.xml.bind jaxb-api 2.3.1

공부/Spring2022. 1. 7. 23:10[Spring] javax.servlet.ServletException: Circular view path ..에러

문제내용 스프링 부트로 게시판 만들기를 하고 있는데 아래와 같은 에러가 발생했다. 해석하자면 mapping 주소가 /singup인데 view name도 signup이라 에러 발생하면서 shut-down 되버림 [signup]: would dispatch back to the current handler URL [/signup] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 해결방법 @Controller에서 ModelAndView 또는 Model에 View Name 을 넣어주면 해결됨

[Spring] JVM 구조와 Garbage Collection(GC)
공부/Spring2021. 11. 30. 11:01[Spring] JVM 구조와 Garbage Collection(GC)

JVM(Java Virtual Machine) - 컴파일된 *.class 파일을 읽어 실행하고 운영체제의 메모리 영역에 접근하여 메모리 관리(GC) 수행하는 프로그램 - JDK > JRE > JVM ( JDK 안에 JRE와 JVM이 포함되어 있음 ) - 운영체제에 맞는 JVM 설치만 하면 자바 프로그램 실행 가능 JVM 구조 - Class Loader 생성된 class 파일을 Runtime Data Area에 적재하는 역할 - Execution Engine 메모리에 적재된 클래스를 기계어로 변경해 명령어 단위로 실행하는 역할(인터프리터, JIT방식) - G.C(Garbage Collection) heap 메모리 영역에 생성된 객체 중 reachability를 잃은 객체를 탐색 후 제거함 - Runtime..

[Spring]  Http Request에 대한 DispatcherServlet 동작과정
공부/Spring2021. 11. 13. 22:47[Spring] Http Request에 대한 DispatcherServlet 동작과정

DispatcherServlet 동작과정 @Controller 인 경우 ① Client(사용자)에서 브라우저 통해 Http Request 보내면 DispatcherServlet이 받음 ② HandlerMapping한테 지시하여 Http Request URI에 맞는 Handler(Controller)를 찾음 ③ 해당 Handler를 실행할 수 있는 HandlerAdapter를 탐색 ④ 찾은 HandlerAdapter를 사용해서 Handler Method를 실행 ⑤ 개발자가 만든 비즈니스 로직을 수행 후 View name(ex. "index")과 model (key, value 형태) 반환받음 ⑥ DispatcherServlet은 ViewResolver 에게 View name전달하여 해당 View 파일을 찾..

공부/Spring2021. 10. 11. 13:03[gradle] General error during semantic analysis: Unsupported class file major version 60 에러

상황 (2021.10.11) '빠른 학교' 인강을 듣던 중에 gradle.build에 의존 라이브러리 추가했는데 다음과 같은 에러가 출력됨 에러 로그 General error during semantic analysis: Unsupported class file major version 60(이하생략) 문제 해결 검색결과 gradle에서 java 16버전을 지원하지 않아서 에러 출력되는 것으로 파악 cmd 창에 java --version 확인시 jdk 16 버전 설정되어 있었음 그런데 JAVA_HOME 환경변수 설정은 openjdk11 이었음 jdk 16을 삭제하고 재부팅 다시 cmd 창 확인 후 gradle.build 재실행시 정상동작 확인함

공부/Spring2021. 10. 6. 21:56[Java] toString() - 객체에 정의시 출력문에서 자동 호출되는 함수

핵심 java 정의된 모든 class 는 최상위 Object 객체를 상속받음 extends 를 붙이지 않아도 java.lang.Object 상속받음 Object class의 메소드 중 toString()을 사용자 정의 객체에서 오버라이딩(Overiding,재정의) 할 경우 System.out.println(객체); 로 호출시 객체에서 재정의한 toString()이 자동으로 호출되도록 약속되어 있다 예시 Student.java public class Student implements Comparable{ private int no; private String name; private int score; public Student(int no, String name, int score){ this.no = ..

[Java] window10 에 JDK 환경변수 설정하기
공부/Spring2021. 9. 19. 23:20[Java] window10 에 JDK 환경변수 설정하기

Jupyter notebook 설정 이슈로 인한 JDK 9 설치 기록 (2021-09-19) 1. jdk 설치 파일 다운받기 운영체제 bit 수 확인해서 다운 받기 아래 64bit 다운로드 링크 ( 오라클 회원가입 하기 ) https://www.oracle.com/kr/java/technologies/javase/javase9-archive-downloads.html 2. JDK 설치 경로 확인 및 복사 보통 C:\Program Files\Java 경로에 있음 (예시) C:\Program Files\Java\jdk-9.0.4 3. JAVA_HOME 환경변수 설정하기 내컴퓨터 > 마우스 오른쪽 클릭 [속성] > 고급시스템 설정 > [고급 탭] > [환경변수] 시스템 변수 JAVA_HOME 추가 및 jdk ..

반응형
image