분류 전체보기 560

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

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

Spring/Spring 2023.10.14

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

1. Lazy-initialized Beans구분설명비고기본 동작ApplicationContext는 초기화 시 모든 싱글톤 빈을 즉시 생성설정 오류를 초기화 시점에 조기 발견 가능지연 초기화 (Lazy)빈의 생성 시점을 첫 요청 시점으로 지연자원 절약, 시작 시간 단축 설정예시) XML더보기 요소의 lazy-init 속성으로 제어됩니다. 예시) XML (컨테이너 수준)더보기 default-lazy-init 속성을 사용하여 컨테이너 수준에서 지연 초기화를 제어할 수 있습니다. 예외 사항Lazy 된 빈이 Non-Lazy 빈의 의존성인 경우해당 싱글톤 빈의 종속성을 만족시키기 위해, ApplicationContext는 지연 초기화 된 빈을 즉시 생성합니다.  출처Spring document - Lazy in..

Spring/Spring 2023.10.14

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

1. Autowiring CollaboratorsAutowiring빈들 사이의 의존성을 자동으로 연결하는 기능입니다.ApplicationContext 내에서 빈들의 종속성을 자동으로 매칭하여 연결해 줍니다. 장점항목설명비고구성의 간소화프로퍼티나 생성자 인수를 직접 명시할 필요가 줄어듦XML이나 Java 설정에서 코드량 감소동적인 구성 업데이트새로운 의존성 추가 시, 구성 변경 없이 자동 반영코드 안정화 이후에는 명시적인 설정으로 전환 가능개발 초기 단계에서 유용유지보수성과 명확성 확보 목적 설정모드설명비고no (default)자동 와이어링을 수행하지 않음명시적 의존성 주입 필요byName프로퍼티 이름과 같은 이름의 빈을 찾아 자동 주입이름 일치 필수byType프로퍼티의 타입과 일치하는 빈을 찾아 자동 주..

Spring/Spring 2023.10.14

[Spring][Core] 2-5. Bean: Dependency Injection

1. Dependency Injection외부에서 객체 간의 의존성을 주입하는 기법입니다.개발자가 직접 코드로 수행하는 것이 아니라, 프레임워크의 IoC Container에 의해 자동으로 주입됩니다.의존성 전달에 대한 제어 흐름의 주체가 개발자에서 IoC Container로 역전됩니다.이 때문에 "제어 역전"이라는 용어가 사용됩니다.  장점장점 구분설명깔끔한 코드- 간결함: 명세만 표기하여 구현체를 주입받을 수 있음- 가독성 높음 + 중복성 감소: 의존성 생성 코드가 없음 유지보수성추상화에 의존 → 결합도 낮음 → 변경이 용이확장성설정 변경만으로 구현체 교체 가능테스트 용이성Mock 객체 주입이 쉬움 2. Constructor-based Dependency Injection생성자 주입 기반 DI를 의미합..

Spring/Spring 2023.10.14

[Spring][Core] 2-4. Bean: Scopes

빈 정의를 통해 생성된 빈에게 의존성과 설정 값을 제어할 수 있을 뿐만 아니라, 객체의 생명 주기도 제어할 수 있습니다.다양한 범위에서 객체를 생성할 수 있습니다. 1. The Singleton Scope (Default)컨테이너당 하나의 인스턴스만 생성합니다.캐시에 저장됩니다.각 IoC Container 들은 이 캐시된 객체를 반환합니다.싱글톤 빈에 대한 모든 요청은 항상 동일한 공유 인스턴스를 반환합니다. 2. The Prototype Scope항목설명정의요청마다 새로운 빈 인스턴스가 생성되는 스코프생성 시점getBean() 호출 또는 의존성 주입 시마다 새 인스턴스 생성사용 예상태를 가지는 객체 또는 매번 다른 상태가 필요한 빈생명 주기 관리Spring이 초기화까지만 관리하고, 그 이후는 개발자 책..

Spring/Spring 2023.10.14

[Spring][Core] 2-2. Bean: Naming

1. Naming Beans식별자모든 빈은 하나 이상의 식별자를 가지며, 이 식별자는 컨테이너 내에서 고유해야 합니다.빈은 보통 하나의 식별자만을 가지지만, 추가로 별칭(aliases)으로 사용할 식별자를 더 가질 수 있습니다. 빈 이름 자동 생성클래스의 이름에서 가져온 후 첫 문자를 소문자로 변경하여 생성됩니다.첫 번째와 두 번째 문자가 모두 대문자인 경우 원래의 대문자 유지 규칙이 적용됩니다. Aliasing a Bean outside the Bean Definition빈에 대한 별칭(alias)을 설정하면 해당 빈을 다양한 이름으로 참조할 수 있게 해줍니다.이 기능은 특히 큰 시스템에서 여러 하위 시스템 간에 설정을 분할할 때 유용하게 사용됩니다.각 하위 시스템은 자신만의 객체 정의를 가질 수 있습..

Spring/Spring 2023.10.14

[Spring][Core] 2-3. Bean: Instantiating

0. Nested class names중첩 클래스(nested class)는 한 클래스 내부에 정의된 또 다른 클래스입니다.중첩 클래스를 빈으로 정의하려면 $ 표시를 사용하여 중첩클래스를 표현합니다. (fully qualified name)   1. Instantiating Beans구분설명사용 용도생성자 (기본 방식)클래스의 생성자를 통해 객체를 직접 생성가장 일반적인 방식, 단순한 객체 생성정적 팩토리 메서드 static 메서드를 호출하여 객체 생성생성에 커스텀 로직이 필요한 경우인스턴스 팩토리 메서드다른 빈의 인스턴스 메서드를 호출하여 객체 생성팩토리 객체를 별도 관리할 필요가 있을 때 예제) 생성자더보기더보기예제) 정적 팩토리 메서드 더보기더보기public class ClientService..

Spring/Spring 2023.10.14

[Spring][Core] 2-1. Bean: Definition

1. BeanDefinitionSpring IoC Container에게 Configuration Metadata를 통해 Bean의 동작 방식 및 설정에 대한 메타데이터를 제공합니다.Spring IoC Container는 Configuration Metadata를 BeanDefinition 인터페이스의 구현체로 변환합니다. 정보항목설명Class빈 객체를 생성하기 위한 실제 클래스 타입Name컨테이너에서 해당 빈을 참조할 때 사용하는 고유 이름 또는 ID 동작항목설명Scope빈의 범위Autowiring mode의존성 자동 주입 방식 (byType, byName, constructor, no)Lazy Initialization Mode빈이 실제로 요청될 때까지 초기화를 지연할지 여부Initialization ..

Spring/Spring 2023.10.14

[Spring][Core] 1. IoC Container

1. Introduction to the Spring IoC Container and BeansIoC (Inversion of Control)전통적으로는 객체 생성, 생명 주기 관리는 개발자가 작성한 코드에 의해 제어됩니다.IoC는 이러한 제어 흐름의 주체를 프레임워크나 컨테이너가 담당하도록 하는 매커니즘입니다.프레임워크가 주요 제어 흐름을 담당하게 하여, 개발자가 비즈니스 로직에 집중할 수 있게 합니다. DI (Dependency Injection)IoC의 한 형태로, 객체의 의존성을 외부에서 주입하는 기법입니다.의존성을 개발자가 직접 코드로 주입하는 것이 아닌, IoC Container에 의해 자동으로 주입됩니다. IoC ContainerSpring에서 객체 생성 및 관리, 의존성 주입을 담당하는 컴..

Spring/Spring 2023.10.14

[Spring Security] 5-4. 보안: HttpFirewall

1. HttpFirewallSpring Security의 FilterChainProxy에 전달되는 요청을 검사하고, 위험한 요청을 차단하는 매커니즘서블릿 컨테이너마다 URL 해석 방식이 다르므로, 아래와 같은 경우에 보안 문제가 발생할 수 있음 역할HTTP 요청이 보안 필터 체인에 도달하기 전에 요청을 검사하고, 필요한 경우 수정하는 역할을 합니다.구분설명예시 / 차단 대상정규화URL 경로에서 위험한 문자나 패턴을 제거하여 안전하게 변환/a/../b, //multiple//slashes, /path;param=value 등요청 검증악의적인 요청을 식별하고 차단; 세미콜론이 포함된 경로비정상 쿼리 스트링허용되지 않은 HTTP 메서드HTTP 응답 분할 방지악의적 응답 조작이 일어나지 않도록 차단(응답 헤더에..