본문 바로가기

728x90

TIL, WIL

(78)
01. 30 TIL : @ConstructorBinding https://www.zodaland.com/tip/64 ZODALAND 새 프로젝트를 진행하며 설정 값 적용을 위해 Properties 클래스를 작성 중 이전 프로젝트와 마찬가지로 @ConstructorBinding 어노테이션을 적용 했는데 오류가 발생했다. 똑같은 방식으로 적용했는데도 www.zodaland.com 스프링 부트 3 이후부터는 @ConstrutorBinding 어노테이션을 사용할 필요가 없다.
01. 04 TIL : 커스텀 MVC 프레임워크 만들기 실습 - 어노테이션 기반 MVC 프레임워크 ~ DispatcherServlet ~ AnnotationHandlerMapping (+그림에서 HandlerMapping과 동일) ~ HandlerAdapter ~ ViewResolver 새로운 요청 URL을 만들때 1) 컨트롤러 생성 2) RequestMappingHandlerMapping에서 핸들러를 Mapping 하기 위해 해당 컨트롤러 객체 생성 및 mapping map에서 url을 통해 해당 컨트롤러를 찾는 findHandler() 메서드 호출 * 주의할 점 : 하나의 컨트롤러는 mapper에서 하나의 주소를 할당받아야 한다(url이 중복되면 안된다)
01. 23 TIL 의존성 문제 -> 기존 mysql:mysql-connector-java는 스프링 부트 2.7.8 이후부터는 사용할 수 없다 ~ com.mysql.connector.j를 사용할 것
01. 02 TIL : 프런트 컨트롤러(front controller) 패턴 출처 : 패스트캠퍼스 - 모든 요청을 단일 handler에서 처리하도록 하는 패턴 - 스프링 웹 MVC 프레임워크의 DispatcherServlet(프런트 컨트롤러 역할)이 프런트 컨트롤러 패턴으로 구현되어 있다 * Forward vs Redirect 1) Forward - 서블릿에서 클라이언트를 거치지 않고 바로 다른 서블릿(또는 JSP)에 요청하는 방식 - Forward 방식은 서버 내부에서 일어나는 요청이기 떄문에 HttpServletRequest, HttpServletResponse 객체가 새롭게 생성되지 않는다(공유된다) - RequsetDistpatcher dispatcher = request.getRequestDispatcher("포워드할 서블릿 또는 JSP"); - dispatcher.fo..
12. 31 TIL : 리플렉션(Reflection API) - 힙 영역에 로드되어 있는 클래스 타입의 객체를 통해 필드, 메소드, 생성자를 접근제어자와 상관없이 사용할 수 있도록 지원하는 API ~ 힙 영역의 클래스 타입 객체를 가져오는 세 가지 방법 : 1) class.class, 2) instance.getClass, 3) class.fullname + JVM의 클래스 로더는 클래스 파일 로딩이 끝나면 클래스 타입 객체를 생성해 메모리의 힙 영역에 저장한다 - 컴파일 시점이 아닌 런타임 시점에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법 - 주로 프레임워크 또는 라이브러리 개발 시 사용된다 * 리플렉션을 사용하는 프레임워크, 라이브러리 - 스프링(DI) - 테스트 프레임워크 ~ JUnit - JSON Serialization/Deserial..
12. 27 TIL : JDBC 등 JDBC - 자바 애플리케이션에서 DB 프로그래밍을 할 수 있도록 하는 표준 인터페이스 - JDBC 구현체는 각 DB 밴더사에서 제공한다 ~ JDBC Driver DBCP - 미리 일정량의 DB 커넥션을 생성해 풀에 저장하고 Http 요청에 따라 필요 시 풀에서 커넥션을 가져다 사용 - 스프링 부트 2.0부터는 디폴트 커넥션 풀로 HikariCP 사용 커넥션 풀 사용 시 유의사항 - WAS 스레드가 커넥션의 사용 주체이므로 커넥션 개수는 WAS 스레드 수와 함께 고려해야 한다 ~ 커넥션 수가 크면 메모리 소모가 커지지만 동시 접속자 수가 많아도 대기 시간이 적어지기 떄문에 적정 커넥션 량을 생성해야 한다 DataSource - 커넥션을 획득하기 위한 표준 인터페이스
12. 26 TIL : 서블릿 Servlet Servlet ~ Interface - 서블릿 컨테이너가 인터페이스의 메서드를 호출한다 - 생명 주기 관련 메서드 : init(), service(), destory() - 그 외 : getServletConfig(), getServletInfo() Generic Servlet - 서블릿을 사용하기 위해 모든 메서드를 구현한다는 것은 비효율적으로, 이를 해결하는 것이 제네릭 서블릿이다. 필요할 때만 오버라이드 한다 - service 메서드만 추상 메서드로 있어 해당 메서드만 구현하면 된다 Http Servlet - 제너릭 서블릿을 상속한다 - 각 요청 method에 따라 do~ (get, post, head 등) 메서드가 수행된다 Http Servlet -> Generic Servlet -> Servlet
12. 22 TIL : 자바 & 스프링 1. 테스트 코드에서 객체를 생성하고 그 객체가 잘 생성된 것인지 확인하기 위해선 해당 클래스에 equals & hashCode()가 구현되어 있어야 한다 2. CGI 프로토콜에 따른 프로그램 안에서 웹 서버와 스크립트 엔진 사이 관계는 서블릿과 서블릿 컨테이너와 같은 관계다 - 두 개의 관계 모두 CGI 규약을 따른다 * 서블릿 : 자바에서 웹 애플리케이션을 만드는 기술, 자바에서 동적 웹페이지 구현을 위한 표준 1) 서블릿 "컨테이너" - 서블릿의 생성부터 소멸까지 라이프 사이클을 관리하는 역할 ** 스크립트 "엔진" vs 서블릿 "컨테이너" ~ 서블릿 컨테이너는 서블릿의 수명 주기를 관리하기 때문에(컨테이너는 수명 주기 관리 역할이 있을 떄 이름을 붙인다) 컨테이너라고 한다 - 서블릿 컨테이너는 웹..

728x90