전체 글 420

[Spring MVC] 1-2. DispatcherServlet: Special Bean Types

DispatcherServlet는 WebApplicationContext의 대리 구성요소에 작업을 위임하여 요청을 처리합니다. 대리 구성요소는 Spring IoC Container에 Bean으로 등록되어 적절하게 사용됩니다. 대리 구성요소는 Bean으로 등록되므로 커스터마이징할 수 있습니다. 1. HandlerMapping 들어오는 웹 요청을 적절한 핸들러에 연결하는 역할을 담당합니다. 해당 요청을 처리하기 전과 후에 추가적인 작업을 수행하기 위해 인터셉터를 사용합니다. 핸들러 매핑의 구현 타입에 따라 핸들러 매핑의 동작이 달라집니다. 주요 핸들러 매핑 구현체 RequestMappingHandlerMapping @RequestMapping 애노테이션이 있는 메서드에 매핑합니다. SimpleUrlHandl..

Spring/Spring MVC 2023.10.16

[Spring MVC] 1-1. DispatcherServlet: Context Hierarchy

프론트 컨트롤러 애플리케이션에서 요청을 한 곳에서 받아서 적절한 컨트롤러나 핸들러로 라우팅하는 설계 패턴입니다. Spring MVC는 프론트 컨트롤러 패턴 주위에 설계되었습니다. DispatcherServlet Spring MVC에서 프론트 컨트롤러 역할을 담당합니다. 요청에 따라 적절한 컨트롤러나 뷰 리졸버, 예외 핸들러 등으로 라우팅하는 작업을 수행합니다. Java 구성 방식이나 web.xml을 통해 할 수 있습니다. DispatcherServlet은 일반적인 서블릿처럼 선언되고 매핑됩니다. public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(Servle..

Spring/Spring MVC 2023.10.16

[Java][Tutorial] 3-2. Collections: Queue, Deque, Map

1. Queue InterfaceQueue는 처리를 위해 요소를 보관하는 컬렉션입니다.기본적인 Collection 연산 외에도 추가적인 삽입, 삭제, 검사 연산을 제공합니다. 기본 연산요소 추가add(e)큐의 용량 제한을 위반할 경우 IllegalStateException을 던집니다.offer(e)용량 제한이 있는 큐에서만 사용하기 위한 것요소를 삽입하지 못했을 때 false를 반환합니다.  요소 반환remove(), poll()큐의 앞쪽 요소를 제거하고 반환합니다. 요소 확인element(), peek()요소를 제거하지 않습니다. 특징정렬대개 FIFO(First-In-First-Out) 방식으로 요소를 정렬우선순위 큐는 요소의 값을 기준으로 요소를 정렬합니다. LinkedListQueue를 구현하는 ..

Java 2023.10.15

[Java][Tutorial] 3-1. Collections: Collection, Set, List

1. Introduction 여러 오브젝트를 하나의 단위로 그룹화하는 컨테이너 What Is a Collections Framework? Collection을 표현하고 조작하기 위한 통합된 아키텍쳐입니다. Interface 컬렉션을 대표하는 추상 데이터 타입입니다. 다양한 구현체들을 같은 방식으로 처리할 공통의 규약을 정의할 수 있습니다. Implementations 컬렉션 인터페이스의 실제 구현입니다. 재사용 가능한 데이터 구조입니다. Algorithms 컬렉션 인터페이스를 구현한 객체의 메서드입니다. (검색, 정렬) 모든 컬렉션 구현체에서 가지고 있습니다. (다형성) Benefits of the Java Collections Framework 프로그래밍 노력 감소 유용한 데이터 구조와 알고리즘을 제공..

Java 2023.10.15

[Java][Tutorial] 2-1. Essential Java Classes: Exceptions

1. ExceptionsWhat Is an Exception?프로그램이 정상 흐름에서 벗어나 중단된 상황을 뜻합니다.Java는 예외적인 이벤트나 에러를 핸들링하기 위해 Exception 클래스를 사용합니다. Exception예외 상황에 대한 정보를 가집니다.Exception 인스턴스를 생성해서 JVM에게 전달합니다. Exception Handling메서드 내에서 에러가 발생 시, JVM으로부터 처리됩니다.call stack을 하나씩 내려가면서 처리될 catch 블록을 탐색합니다.call stack을 하나씩 내려가면서, 던져진 예외타입에 매칭되는 catch 블록을 순차적으로 탐색합니다.별도로 작성된 서브타입에 대한 예외처리 핸들러를 먼저 작성하여 처리되도록 해야 합니다.catch 블록을 찾지못하면 jvm..

Java 2023.10.15

[Java][Tutorial] 1-4. Learning the Java Language: Annotation

The Java Tutorials have been written for JDK 8 4. Annotation프로그램에 메타데이터 정보를 제공하는 주석입니다.코드에 직접적인 영향을 주지 않습니다. ElementTypepublic enum ElementType { TYPE, /** Class, interface, enum, or record declaration */ FIELD, /** Field declaration */ METHOD, /** Method declaration */ PARAMETER, /** Formal parameter declaration */ CONSTRUCTOR, /** Constructor declaration */ ..

Java 2023.10.15

[Java][Tutorial] 1-1. Learning the Java Language: Object-Oriented Programming Concepts

The Java Tutorials have been written for JDK 8 1. Object-Oriented Programming ConceptsWhat Is an Object?모델이 가진 상태와 행동의 번들입니다.현실세계의 물체를 소프트웨어 세계의 물체로 모델링해서 사용합니다. state객체가 가지고 있는 내부 상태값을 의미합니다. method객체의 행동을 메서드라 부릅니다.오브젝트 간 커뮤니케이션 매커니즘다른 오브젝트로부터 노출시키므로써 인터렉션이 가능합니다.캡슐화내부 상태의 조작을 기반으로 동작합니다.바깥에서 직접적으로 내부의 state를 접근하지 못하게 하는 기능묵시적 형변환결과를 받을 때파라미터로 전달할 때variable arguments (...)동일 타입의 인자가 몇 개 들어올 지 ..

Java 2023.10.15

[Spring][Core] 2-8. Bean: Customizing the Nature of a Bean

1. Lifecycle Callbacks Spring은 빈의 생명주기와 상호작용할 수 있는 여러 방법을 제공합니다. 이러한 도구를 활용하여 빈의 초기화 및 파괴 과정에 사용자 지정 동작을 추가할 수 있습니다. BeanPostProcessor 인터페이스 빈 생성 시기에 BeanFactory Hook을 정의하는 인터페이스 입니다. 내부적으로 콜백 인터페이스를 찾아 적절한 메서드를 호출하기 위해 BeanPostProcessor를 사용합니다. 생성 전/후의 콜백함수를 정의할 수 있습니다. postProcessBeforeInitialization(), postProcessAfterInitialization() Initialization Callbacks 초기화 메서드는 컨테이너의 싱글톤 생성 잠금 내에서 실행됩니..

Spring/Spring 2023.10.14

[Spring][Core] 2-7. Bean: Lazy-initialized Beans

1. Lazy-initialized Beans 기본 동작 ApplicationContext는 기본적으로 초기화 과정에서 모든 싱글톤 빈을 즉시 생성하고 설정합니다. 즉시 인스턴스화는 설정 오류나 환경 문제가 컴파일 타임에 조기에 발견됩니다. 오류가 서버 기동중에 발견되는 것을 방지할 수 있습니다. 지연 초기화(Lazy Initialization) 이러한 기본 동작을 원치 않을 때, 빈 정의 단계에서 지연 초기화로 표시하여 싱글톤 빈의 사전 인스턴스화를 방지할 수 있습니다. IoC 컨테이너에게 지연 초기화 된 빈은 즉시 생성이 아닌 첫 요청시에 생성하도록 지시합니다. XML에서의 설정 XML에서 이 동작은 요소의 lazy-init 속성으로 제어됩니다. 예외 사항 지연 초기화 된 빈이 지연 초기화되지 않은 ..

Spring/Spring 2023.10.14

[Spring][Core] 2-6. Bean: Autowiring Collaborators

1. Autowiring Collaborators Autowiring 빈들 사이의 의존성을 자동으로 연결하는 기능입니다. ApplicationContext 내에서 빈들의 종속성을 자동으로 매칭하여 연결해 줍니다. 장점 구성의 간소화 직접적으로 프로퍼티나 생성자 인수를 명시적으로 지정할 필요가 줄어듭니다. 동적인 구성 업데이트 필요한 의존성이 추가시, 구성을 수정할 필요 없이 자동으로 해당 의존성이 적용됩니다. 코드베이스가 안정적이지 않은 개발 초기 단계에서 특히 유용할 수 있습니다. 코드베이스가 안정화되면 명시적인 와이어링으로 전환하는 옵션도 있습니다. XML 기반 구성에서의 자동와이어링 (default) no 자동와이어링이 발생하지 않습니다. byName 프로퍼티 이름을 기반으로 자동와이어링 합니다. ..

Spring/Spring 2023.10.14