본문 바로가기

Java

(23)
자바 트러블슈팅 - (1. 자바 기반의 시스템에서 발생할 수 있는 문제들) https://www.yes24.com/Product/Goods/84937877 자바 트러블슈팅 - YES24 건강한 서비스를 위한 scouter 활용법은 물론,그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다!기술이 아무리 발전하고 뛰어난 개발자가 있더라도 사람이 만든 프로그램은 언제든 www.yes24.com 자바 기반의 시스템에서 발생할 수 있는 문제들 서비스나 시스템 장애가 발생하면 대부분은 서버의 로그를 보거나 서버의 리소스 사용량을 보고 짐작 경험이 풍부 -> 데이터를 기반으로 문제의 원인을 쉽게 찾아냄 경험이 없음 -> 중요 데이터를 수집하지 않고 서버를 재시작 하는 경우가 있음 어떤 문제가 발생할 수 있을까? 시스템이 느려짐 시스템 응답이 없음 예외 발생 시스템 죽음 시스템이 ..
개발자의 글쓰기 - (2장. 개발 시간을 줄여주는 이름 짓기와 주석 쓰기) http://www.yes24.com/Product/Goods/79378905 개발자의 글쓰기 - YES24 오직 개발자를 위한 글쓰기의 모든 것을 담았다!이 책은 개발자의 글쓰기 능력을 종합적으로 향상하기 위한 책이다. 코드 안에서는 함수와 변수 이름을 짓는 것부터 주석 쓰는 법, 에러 메시지 www.yes24.com 2장 개발 시간을 줄여주는 이름 짓기와 주석 쓰기 01. 네이밍 컨벤션, 이유를 알고 쓰자 개발자의 가장 큰 고민은 이름 짓기 이름을 잘못 지어서 코드를 이해하기 어렵고, 자기가 이름을 지어놓고도 나중에는 그 이름이 무엇을 뜻하는지 모를 때도 많다. 잘만 하면 코드를 짜기도 쉽고 이해하기도 쉽다. 또한 다른 개발자 및 외부와 소통도 쉽고 문서를 대신할 수도 있다. 이름 짓기는 창조가 아니..
로그아웃 처리 필터: LogoutFilter 로그아웃 처리 필터: LogoutFilter 로그아웃을 처리하는 필터 LogoutHandler : 여러 개의 logoutHandler를 감싸고 있는 Composite 객체 LogoutSuccessHandler : 로그아웃 처리 후 어떻게 할 것인지 정의 기본 LogoutSuccessHandler는 SimpleUrlLogoutSuccessHandler 로그아웃 post 요청시에만 동작함 로그아웃 요청시 LogoutHandler에 기본적으로 등록된 logoutHandler들이 존재 로그아웃 config 설정 * 100 번째 글!!!!!!!!!
RestClientTest를 알아보자~ RestClientTest 어노테이션은 외부 API를 사용할 때 대상 API를 MOCKING 할 수 있는 유용한 테스트이다. 요청을 받는 쪽이 아닌 요청을 하는 쪽 입장에서의 테스트이다. @RestClientTest를 사용하면 MockRestServiceServer라는 임시 서버를 Bean으로 생성해준다. @SpringBootTest와 달리 지정한 최소한의 Context만 사용해서 테스트를 진행한다. 아래는 기존 Service 코드이다. @Service public class RestClientTestService { private final RestTemplate restTemplate; private final String openApiUrl = "https://httpbin.org/get"; pub..
ThreadLocal에 대해서 알아보자 - 1 자바 ThreadLocal 클래스를 사용하면 동일한 Thread에서만 접근할 수 있는 변수를 만들 수 있다. 따라서 두 Thread가 동일한 코드를 실행하고 ThreadLocal 변수에 접근을 해도 서로의 ThreadLocal 변수를 볼 수 없다. ThreadLocal 생성 자바 객체를 만드는 것과 같이 new 연산자를 통해서 ThreadLocal을 생성 private ThreadLocal threadLocal = new ThreadLocal(); 해당 작업은 Thread 당 한 버만 수행하면 된다. 각 Thread에는 자체 설정된 ThreadLocal 값만 표시 ThreadLocal 값 사용 Thread 로컬에 저장된 값은 get() 메서드를 통해 사용할 수 있다. String threadLocalVa..
intellij Unexpected error (103) returned by AddToSystemClassLoaderSearch 문제 윈도우 환경 Intellij로 개발을 하다 보면 디버깅 시에 아래와 같은 에러를 마주할 수 있다. 경로명에 한글이 들어가서 이런 이슈가 들어간다고 추측(?) 하고 있다. 해결방법은 (2020.3.2 커뮤니티 버전 기준) 1. File -> Settings... 2. Build, Execution, Deployment -> Debugger -> Async Stack Traces 에서 Instrumenting agent 체크를 풀어주면 된다. 깔----끔
JPA 공부 - 4 2021/02/25 - [IT/데이터베이스] - JPA 공부 - 3 4. 엔티티 매핑 JPA를 사용하는 데 가장 주우요한 일은 엔티티와 테이블을 정확히 매핑하는 것이다. JPA는 다양한 매핑 어노테이션을 지원하는데 크게 4가지로 분류할 수 있다. 객체와 테이블 매핑 기본 키 매핑 필드와 컬럼 매핑 연관관계 매핑 4.1 @Entity JPA를 사용해 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 부여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부른다. 주의사항 기본 생서자 필수 final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final 을 사용하면 안 된다. 4.2 @Table @Table은 엔티티와 매핑할..
JPA 공부 - 1 2021/01/17 - [IT/데이터베이스] - JPA 공부 - 0 1. JAP 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 관계형 데이터베이스는 가장 대중적이고 신뢰할 만한 안전한 저장소 JDBC API 를 사용해서 SQL을 데이터베이스에 전달 1.1.1 반복 예를들어 회원 관리 기능을 개발해 보자 회원 관리용 객체 생성 및 회원용 DAO 생성 // 회원 객체 public class Member { private String memberId; private String name; ... } // 회원용 DAO public class MemberDAO { public Member find (String memberId) {...} } 회원 조회용 기능 개발 회원 조회용 SQL 작성 SELECT M..
JPA 공부 - 0 2021/01/18 - [IT/데이터베이스] - JPA 공부 - 1 2021/01/21 - [IT/데이터베이스] - JPA 공부 - 2 2021/02/25 - [IT/데이터베이스] - JPA 공부 - 3 2021/01/29 - [IT/데이터베이스] - JPA 공부 - 4 2021/02/07 - [IT/데이터베이스] - JPA 공부 - 5 2021/02/25 - [IT/데이터베이스] - JPA 공부 - 6 JPA SYUDY 참고 서적 : 자바 ORM 표준 JPA 프로그래밍 학습 방식 책 정리 예제 코드 실습 PLAN (책 목차에 따라 진행) JPA 소개 (1주차) JPA 시작 (2주차) 영속성 관리 (3주차) 엔티티 매핑 (4주차) 연관관계 매핑 기초 (5주차) 다양한 연관관계 매핑(6주차) 고급 매핑 상..
DispatcherServlet 기본 동작 1. DispatcherServlet 기본 동작 get http://localhost:8080/app/hello DispatcherServlet.java doService @Override protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception { logRequest(request); ... doDispatch 로 진입 멀티파트 요청(파일 업로드) 인지 확인 핸들러를 찾아오는 부분 : 해당 요청을 처리하는 핸들러를 찾아오는 부분 (대부분 전략 패턴을 통해 가지고 옴) DispatcherServlet이 들고 있는 여러개의 핸들러 맵핑중 RequestMappingHandlerMappin..