교육 자료
-
동적 프록시 객체를 생성하는 방법교육 자료 2022. 9. 14. 23:09
동적(Dynamic) 프록시 프록시 객체를 직접 생성하지 않고 런타임 시점에 동적으로 생성된 프록시 동적 프록시를 생성하는 2가지 방법 JDK Dynamic Proxy 인터페이스를 구현하여 프록시 생성 CGLib (= Code Generation Library) 클래스의 바이트 코드를 조작하여 프록시 생성 타겟 클래스를 상속하여 프록시를 생성함 따라서, 타겟 클래스 또는 메소드에 final 키워드나 private 접근 제한자가 있는 경우 오버라이딩을 할 수 없으므로 프록시를 생성할 수 없음 추가 설명 JDK Dynamic Proxy와 CGLib 라이브러리 모두 런타임 위빙(weaving) 방식 스프링 AOP는 동적 프록시 기반으로, JDK Dynamic proxy와 CGLib 기술을 사용하고 있음 프록시..
-
DI 프레임워크 만들기교육 자료 2022. 8. 28. 23:42
DI (Dependency Injection) 의존성 주입 한 객체가 다른 객체를 사용할 때 의존성이 있다고 함 "A가 B를 의존한다.(= A가 B에 의존하고 있다)"는 의미는 의존대상 B가 변하면 A에 영향을 미친다는 의미 즉, A가 의존 대상 B의 변화에 취약하다는 의미 만약, 인터페이스에 대해서 의존관계를 만들어 두면 인터페이스 구현 클래스와의 결합도가 느슨해지면서 변화에 영향을 덜 받게 됨 런타임 시 의존 관계를 맺는 대상을 외부에서 결정하고 주입해 주는 것 스프링 프레임워크는 DI 기능을 지원해주는 프레임워크 설정만 해주면 됨 DI 장점 의존성 주입을 인터페이스 기반으로 설계하면, 코드가 유연해짐 느슨한 결합도(loose coupling) 클래스 간의 결합도를 줄일 수 있음 변경에 유연해짐 결합..
-
MVC 프레임워크 만들기교육 자료 2022. 8. 21. 16:07
프런트 컨트롤러 패턴 모든 요청을 단일 handler(처리기)에서 처리하도록 하는 패턴 중앙 집중식 요청 처리 메커니즘 스프링 웹 MVC 프레임워크의 DispatcherServlet(프런트 컨트롤러 역할)도 프런트 컨트롤러 패턴으로 구현돼 있음 Forward vs Redirect forward 서블릿에서 클라이언트(웹 브라우저)를 거치지 않고 바로 다른 서블릿(또는 JSP)에게 요청하는 방식 URL 주소가 달라지지 않음 forward 방식은 서버 내부에서 일어나는 요청이기 때문에 HttpServletRequest, HttpServletResponse객체가 새롭게 생성되지 않음(공유됨) RequestDispatcher dispatcher = request.getRequestDispatcher("포워드 할 ..
-
Reflection교육 자료 2022. 8. 17. 22:42
Reflection 힙 영역에 로드돼 있는 클래스 타입의 객체를 통해 필드/메소드/생성자를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API JVM의 클래스 로더는 클래스 파일에 대한 로딩이 끝나면 클래스 타입의 객체를 생성해서 메모리 힙 영역에 저장함 힙 영역에 로드돼 있는 클래스 타입 객체를 가져오는 3가지 방법 클래스.class 인스턴스.getClass() Class.forName("클래스명") 컴파일 시점이 아닌 런타임 시점에 동적으로 특정 클래스의 정보를 추출해낼 수 있는 프로그래밍 기법 주로 프레임워크 또는 라이브러리 개발 시 사용됨 https://docs.oracle.com/javase/8/docs/technotes/guides/reflection/index.html https://..
-
JDBC 프로그래밍교육 자료 2022. 8. 11. 00:47
JDBC 프로그래밍 01 JDBC 개념 소개 02 DB 커넥션 풀 개념 소개 03 JDBC 프로그래밍 실습 04 실습한 JDCB 코드 리팩토링 및 DB 커넥션 풀 적용 JDBC 개념 소개 JDBC(Java Database Connectivity) 자바 애플리케이션에서 DB 프로그래밍을 할 수 있도록 도와주는 표준 인터페이스 (DBMS 종류에 상관없음) JDBC 인터페이스들을 구현한 구현체들은 각 데이터베이스 벤더 사들이 제공해 준다. 이를 JDBC 드라이버라 한다. 자바 코드에서는 JDBC 인터페이스에만 의존하기 때문에 DB를 변경하더라도 코드를 변경할 필요가 없다. DB 커넥션 풀 개념 소개 DBCP (Database Connection Pool) 미리 일정량의 DB 커넥션을 생성해서 풀에 저장해 두고..
-
도커 및 도커 컴포즈 소개교육 자료 2022. 8. 5. 01:24
도커 컨테이너 기반의 가상화 플랫폼 컨테이너 기반의 가상화 vs 하이퍼바이저 기반의 가상화(OS 가상화) 물리 서버: Host, 가상 서버: Guest Hypervisor(소프트웨어)는 서버 가상화 기술로써 호스트 서버에 설치되어 호스트와 게스트를 나누는 역할을 하고, 각각의 게스트는 하이퍼바이저에 의해 관리되며 시스템 자원을 할당받게 된다. 하이퍼바이저 기반의 가상화 격리된 환경에서 가상 서버를 실행하는 기술 게스트 OS로는 다양한 OS 선택 가능 애플리케이션이 호스트 자원을 사용하기 위해서는 게스트 OS를 거쳐야 한다. 컨테이너 기반의 가상화 격리된 환경에서 프로세스를 실행하는 기술 게스트 OS는 호스트 OS와 동일해야 함 애플리케이션은 도커 엔진을 통해 호스트 자원을 사용할 수 있고 구조적으로 게..
-
멀티 스레드 환경에서 동시성 이슈교육 자료 2022. 7. 25. 01:35
스레드 Safety 멀티 스레드 환경에서 여러 스레드가 동시에 하나의 자원(객체 및 변수)에 접근하더라도 문제없이 동작하는 상황 멀티 스레드 문제점 동기화가 안 될 경우 Race Condition(경쟁상태) 발생 Race Condition이란 여러 프로세스(혹은 스레드)가 동시에 하나의 자원에 접근하기 위해 경쟁하는 상태 실습 코드 https://github.com/serverwizard/was-practice/tree/master/src/main/java/org/example/counter 참고 자료 https://www.javatpoint.com/race-condition-in-java