전체 글 595

[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 응답 분할 방지악의적 응답 조작이 일어나지 않도록 차단(응답 헤더에..

[Spring Security] 5-3. 보안: HTTP Requests

1. Redirect to HTTPSSpring Security에서 HTTP 요청을 자동으로 HTTPS로 리다이렉트시키는 설정 설정더보기@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http // ... .requiresChannel(channel -> channel .anyRequest().requiresSecure() ); return http.build();} 2. Strict Transport Security3. Proxy Server Configuration프록시나 로드 밸런서를 사용하는 환경에서 클라이언트의 실제 요청 정보를 애..

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

1. Default Security HeadersSpring Security는 응답 헤더에 보안에 관련된 헤더를 자동으로 추가해 줌 기본 보안 응답 헤더헤더 이름값설명목적Cache-Control(브라우저 캐시 제어)no-cache, no-store, max-age=0, must-revalidate 브라우저 캐시 차단(해당 페이지 및 리소스 캐시 ❌)사용자 민감정보 노출 방지(뒤로가기 시 민감정보가 남아있음)Pragmano-cache HTTP/1.0 캐시 비활성화HTTP1.0 시대의 캐시 헤더(버전 호환성을 위해 추가됨)Expires0만료일이 과거로 설정되어 캐시 방지HTTP1.0 시대의 캐시 헤더(버전 호환성을 위해 추가됨)X-Content-Type-Optionsnosniff브라우저가 MIME 타입 추측..

[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

[Spring Boot] 4. Data: SQL Databases

0. SQL DatabaseSpring Framework는 광범위한 SQL Database 와의 작업을 지원합니다.JdbcTemplate : JDBC 기술을 사용하여 기존의 코드를 단순화화고, 오류 처리 및 리소스 관리를 개선한 헬퍼 클래스Hibernate : JPA 기반 ORM 기술 Spring Data JPA는 Repository 인터페이스를 제공합/니다.Repository 인터페이스 구현을 통해 Entity 관련 Table과 직접적으로 통신할 수 있습니다.Repository 인터페이스가 제공하는 메서드 이름의 컨벤션으로 메서드를 생성하면 자동으로 관련 쿼리를 생성하여 통신합니다. 1. DataSource항목설명인터페이스javax.sql.DataSource기능Database Connection 생성 ..

Spring/Spring Boot 2023.10.13

[Spring Boot] 3. Web: Servlet Web Application

1. The “Spring Web MVC Framework”Spring Web MVC는 풍부한 기능을 가진 "model-view-controller" 웹 프레임워크 입니다. Controller@Controller (or @RestController) 빈으로 들어오는 요청을 처리하도록 돕습니다@Controller 빈의 메서드는 @RequestMapping을 사용하여 요청을 URI 기반으로 매핑할 수 있습니다. ConversionService객체의 타입을 다른 타입으로 변환하는 인터페이스입니다.항목ApplicationConversionService@ConfigurationProperties 바인딩Spring Web MVC역할중앙 변환 서비스프로퍼티 → 객체 바인딩 시 사용요청 파라미터→ 컨트롤러 파라미터 변..

Spring/Spring Boot 2023.10.12