Spring 90

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

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

Spring/Spring 2023.10.14

[Spring][Core] 1. IoC Container

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

Spring/Spring 2023.10.14

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

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

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

1. Default Security Headers Spring Security는 기본적으로 보안에 관련된 HTTP Response Header를 제공합니다. Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000 ; includeSubDomains X-Frame-Options: DENY X-XSS-Protection: 0 2. Cache Control 기본 캐싱 전략 Spring Security는 기본적으로 사용자의 내용을 보호하기 위해 캐싱을 비활성화 합니다. 악의..

[Spring Boot] 5. Executable Jars

Spring Boot는 spring-boot-loader 모듈을 가지고 executable jar와 war를 로드합니다. spring-boot-loader 모듈은 build tool의 plugin을 통해 자동으로 셋팅됩니다. Gradle Plugin plugins { id 'java' id 'org.springframework.boot' version '3.0.4' } java 플러그인이 적용되어 있을 경우, spring boot 플러그인은 spring-boot-loader 모듈을 자동으로 추가합니다. spring-boot-loader 모듈은 executable jar 을 로드하고 실행할 수 있도록 도와주는 역할을 맡습니다. 1. Nested JARs Java는 기본적으로 중첩 jar를 로드하고 압축하는..

Spring/Spring Boot 2023.10.13

[Spring Boot] 4. Data: SQL Databases

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

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 객체의 타입을 다른 타입으로 변환하는 인터페이스입니다. Spring Boot에서는 ApplicationConversionService를 기본 구현체로 사용합니다. @ConfigurationProperties 바인딩, SpringWeb MVC 포맷에서 주로 사용됩니..

Spring/Spring Boot 2023.10.12

[Spring Boot] 2-10. Core Features: Auto-Configuration

Spring Boot에서 제공하는 Starter 모듈을 의존성으로 사용하면, 번들링된 Auto-Configuration 라이브러리가 함께 제공됩니다. Spring Boot는 번들링된 Auto-Configuration 라이브러리를 픽업하여 적용합니다. 1. Understanding Auto-configured Beans @AutoCofigure* 어노테이션은 관련 자동설정을 활성화하는 기능을 담당합니다. 자동설정 클래스는 *AutoConfiguration 패턴으로 @AutoConfiguration가 붙어 있습니다. 자동설정 클래스의 메서드를 실행하여 자동 설정을 활성화합니다. 각 메서드는 자신의 자동 설정과 관련된 컴포넌트를 빈으로 등록합니다. @Conditional, @ConditionalOnClass,..

Spring/Spring Boot 2023.10.11

[Spring Boot] 2-8. Core Features: Test

Spring Boot는 spring-boot-starter-test 모듈을 통해 test를 위한 어노테이션과 유틸클래스, 테스트 라이브러리를 제공합니다. 1. Test Scope Dependencies spring-boot-test : test core feature spring-boot-test-autoconfigure : test auto-configuration assertj-core : 표현식을 가진 단언 라이브러리 hamcrest : 매처 라이브러리 junit-jupiter : junit5 핵심 모듈. (unit test 프레임워크) mockito-core, mockito-junit-jupiter : mocking, stubbing 프레임워크 JsonPath : JSON을 위한 XPath 모듈 ..

Spring/Spring Boot 2023.10.11