분류 전체보기 558

[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] 4-4. 보안: HttpFirewall

1. HttpFirewall Spring Security의 보안 컴포넌트 중 하나입니다. 여러 웹 기반 공격 유형으로부터 보호하는 보안 레이어를 제공합니다. 역할 HTTP 요청이 보안 필터 체인에 도달하기 전에 요청을 검사하고, 필요한 경우 수정하는 역할을 합니다. 정규화 URL에 포함될 수 있는 잠재적으로 위험한 문자 또는 패턴을 검사하고 제거합니다. 악의적인 요청이 시스템을 방해하지 않도록 합니다 요청 검증 악의적인 요청을 식별하고 거부하는 역할을 합니다. 예를 들어, 세미콜론(;)으로 시작하는 매개변수나 쿼리 문자열에 있는 잠재적 위험 요소를 검사합니다. HTTP 응답 분할 방지 HTTP 응답 헤더에 새 줄 문자가 포함되어 있는지 확인하여 HTTP 응답 분할 공격을 방지합니다. StrictHttpF..

[Spring Security] 5-2. 보안: Security HTTP Response Headers

Cache ControlContent Type OptionsHTTP Strict Transport Security (HSTS)HTTP Public Key Pinning (HPKP)X-Frame-OptionsX-XSS-ProtectionContent Security Policy (CSP)Referrer PolicyFeature PolicyPermissions PolicyClear Site DataCustom Headers1. Default Security HeadersSpring Security는 응답 헤더에 보안에 관련된 헤더를 자동으로 추가해 줌 기본 보안 응답 헤더헤더 이름값설명Cache-Controlno-cache, no-store, max-age=0, must-revalidate 캐싱 완전 차단P..

[Spring Boot] 5. Executable Jars

0. spring-boot-loader 모듈Spring Boot 애플리케이션을 실행 가능한 JAR 또는 WAR로 만들고 실행할 수 있도록 도와주는 모듈 Gradle Pluginplugins { id 'java' id 'org.springframework.boot' version '3.0.4'}java 플러그인이 적용되어 있을 경우, spring boot 플러그인은 spring-boot-loader 모듈을 자동으로 추가합니다. 1. Nested JARsJava는 기본적으로 중첩 jar를 로드하고 압축하는 기능을 제공하지 않습니다.커맨드라인에서 실행할 수 있는 self-contained 애플리케이션에 대한 필요로 인해 다양한 대안책이 나왔습니다.항목Shaded JAR (Uber JAR)Spring..

Spring/Spring Boot 2023.10.13