JAVA 51

[Java] mockito JUnit 5 에서 의존성 주입 - 테스트코드 작성(1)

메이븐 의존성 junit-jupiter-engine testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.2' mockito-core testImplementation 'org.mockito:mockito-core:5.3.1' mockito 확장 mockito-junit-jupiter Mockito는 라이브러리( mockito-junit-jupiter) 에서 JUnit5 확장에 대한 구현을 제공합니다 . testImplementation 'org.mockito:mockito-junit-jupiter:5.3.1' https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter 테스트 클래스..

JAVA 2024.02.19

[Gradle][오류] variable * not initialized in the default constructor

오류 메시지 variable addressBookService not initialized in the default constructor 해결 gradle version 이 4 이하라면 dependencies { implementation 'org.projectlombok:lombok' } gradle version 이 5 이상라면 dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' } 이유 이유는 gradle 버전이 5로 올라가면서 lombok 을 프로젝트에 추가하는 방법이 달라졌기 때문이다. 참고 블로그 : https://anywaydevlog.tistory.com/102

JAVA 2024.02.16

[Java] Spring과 Spring Boot 의 차이점

IOC나 DI를 통해 의존성을 주입할 수 있기 때문에 다양한 스프링 모듈을 사용할 수 있다. 1. Spring 은? web.xml DispatcherServlet 클래스를 등록 url-pattern 태그에서는 요청에 대해서 응답받을 수 있도록 설정 인코딩 타입이나 log4 설정 action-servlet.xml(dispatcherServlet.xml) 뷰 리졸버는 컨트롤러에서 데이터를 받은 후 리턴할 때 뷰 이름을 지정해서 리턴 org.springframework.web.servlet.view.JstlView DataAccessContext.xml pom.xml 수 많은 dependency 를 등록해주어야 한다. 2. Spring Boot 는? Spring Boot Starter 로 바로 실행 가능 or..

JAVA/지식 2021.12.01

[장애조치] .hprof 로그

원인 많은 트래픽에 의해 Heap의 사용량이 증가할 경우 GC가 발생되며 심할 경우 OOM(Out Of Memory)가 발생하여 죽게 된다. 이때, Heap의 높은 사용량을 만든 주범을 알아내기 위해서 Heap Dump 를 한다. 파일 생성 자동 로그 생성-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log 수동 로그 생성$ jmap -dump:format=b,file=heapdump.hprof 84544 Heap Dump 분석 Eclipse Memory Analyer Eclipse Memory Analyzer(MAT) 툴 다운 활용 방법 VisualVM jdk에서 지원하는 툴 경로 : C:\Program Files\Java\jdk1.8.0_191\bin..

JAVA/지식 2021.10.27

[장애조치] hs-err-pid 로그 분석

원인 JVM 도 애플리케이션이므로 버그가 존재한다. 이러한 버그로 인해서 JVM에 Crash 발생 로그 형태 JVM이 비정상적으로 종료되면, hs_err_pid (hotspot), javacore (IBM) 과 같은 형태로 남기게 된다. 오라클의 경우 product flag를 사용 -XX:ErrorFile=/var/log/java/hs_err_pid%p.log Java Platform, Standard Edition Troubleshooting Guide > Location of Fatal Error Log IBM의 경우 .profile 환경 변수를 사용 export IBM_JAVACOREDIR=/somewhere/dumpdir Changing the location of javacore, heapdum..

JAVA/지식 2021.10.27

[Java] GC(Garbage Collection) 개념 및 동작원리 이해

GC (Garbage Collection) 유효하지 않은 메모리가 발생할 때 발생 C 언어는 free() 를 통해서 직접 메모리를 해제하지만, Java는 그렇지 않음 GC 종류 Minor GC (Young 영역) Major GC (Old 영역) Young 영역 새롭게 생성된 객체가 할당되는 영역 대부분의 객체가 금방 Unreadable 상태가 되기 때문에, 많은 객체가 Young 영역 생성 후 삭제됨 Minor GC에 해당 Old 영역 Young 영역에서 Readable 상태를 유지해 살아남은 객체가 복사 복사되는 과정에서 대부분 Young 영역보다 크게 할당, 크기가 큰 만큼 적은 가비지 동작 Major GC 또는 Full GC 동작 방식 Stop The World Mark and Sweep Stop ..

JAVA/지식 2021.08.18

JDBC & DBCP 란? 그리고 JNDI 와의 관계

JDBC 란 Java Data Base Connectivity, DB와 연결하는 Java 인터페이스 DriverManager를 통한 DB Connection 객체 생성 Connection 객체에서 statement 객체 생성 ResultSet 사용 Connection close DBCP 란 DataBase Connection Pool, DB와 연결하고 있는 객체를 관리하기 위한 Connection Pool, Connection Pool에서 오픈된 Connection을 가지고 있다가 필요한 곳에 Connection을 할당 및 관리 DB와 연결하기 위해서는 JDBC가 필요하고 DBCP는 Connection Pool을 이용해 효율성을 향상 DBCP vs JNDI 여기서 DBCP와 JNDI의 공통점과 차이점을 ..

JAVA/지식 2021.08.01

JNDI 란? 이름으로 쉽게 찾을 수 있는 기능

JNDI (Java Naming and Directory Interface) 란? Java 소프트웨어 클라이언트가 이름을 이용하여 데이터 및 객체를 찾을 수 있도록 도와주는 디렉토리 서비스에 대한 Java API 이다. 사용예시 웹 브라우저에서 name/value 쌍으로 전송한 후 서블릿에서 getParameter(name)로 값을 가져올 때 해시맵(HashMap) 이나 해시테이블(HasthTable)에 키/값으로 저장한 후 키를 이용해 값을 가져올 때 웹 브라우저에서 도메인네임으로 DNS 서버에 요청할 경우 도메인 네임에 대한 IP 주소를 가져올 때 왜 사용하는가? 보통 JDBC (DBCP) 설정해서 개발을 한다. 하지만 웹 어플리케이션을 운영서버로 만들 경우 얘기는 달라진다. 그 이유는 아래와 같다...

JAVA/지식 2021.08.01

[Java] 정규식 표현법 기본 & 사용법

자주 사용하는 정규 표현식 정규 표현식 설명 ^[0-9]*$ 숫자 ^[a-zA-Z]*$ 영문자 ^[가-힣]*$ 한글 \w+@\w+\.\w+(\.\w+)? E-Mail ^\d{2,3}-\d{3,4}-\d{4}$ 전화번호 ^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ 휴대전화번호 \d{6} - [1-4]\d{6} 주민등록번호 ^\d{3}-\d{2}$ 우편번호 정규표현식 문법 정규 표현식 설명 ^ 문자열 시작 $ 문자열 종료 . 임의의 한 문자(단 \은 넣을 수 없음) * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나 있음 [ ] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여..

JAVA/지식 2021.06.20