스프링 프레임워크 문서https://docs.spring.io/spring-framework/reference/overview.html이 참조 문서는 기초인 Spring Framework 자체에 중점을 둡니다. Spring Framework는 모듈로 나뉩니다.
이 장에서는 Spring Framework가 구현하는 Inversion of Control(IoC) 원칙을 다룹니다. IoC는 종속성 주입(DI)이라고도 합니다. 객체가 생성자 인수, 팩터리 메서드에 대한 인수 또는 객체 인스턴스가 생성되거나 팩터리 메서드에서 반환된
org.springframework.context.ApplicationContext 인터페이스는 Spring IoC 컨테이너를 나타내며 빈의 인스턴스화, 구성 및 조립을 담당합니다. 컨테이너는 구성 메타데이터를 읽어 어떤 개체를 인스턴스화하고, 구성하고, 어셈블할지에
Spring IoC 컨테이너는 하나 이상의 Bean을 관리합니다. 이러한 Bean은 컨테이너에 제공하는 구성 메타데이터(예: XML 정의 형식)를 사용하여 생성됩니다.컨테이너 자체 내에서 이러한 빈 정의는 다음 메타데이터를 포함하는 BeanDefinition 객체로
DI(종속성 주입)는 객체가 생성자 인수, 팩토리 메서드에 대한 인수 또는 생성된 후 객체 인스턴스에 설정된 속성을 통해서만 객체의 종속성(즉, 작업하는 다른 객체)을 정의하는 프로세스입니다. 팩토리 메소드에서 반환되었습니다. 그런 다음 컨테이너는 Bean을 생성할 때
이전 섹션에서 언급한 것처럼 Bean 속성과 생성자 인수를 다른 관리 Bean(협력자)에 대한 참조로 정의하거나 인라인으로 정의된 값으로 정의할 수 있습니다. Spring의 XML 기반 구성 메타데이터는 이러한 목적을 위해 및 요소 내에서 하위 요소 유형을 지원합니
빈이 다른 빈의 종속성인 경우 이는 일반적으로 한 빈이 다른 빈의 속성으로 설정된다는 의미입니다. 일반적으로 XML 기반 구성 메타데이터의 요소를 사용하여 이를 수행합니다. 그러나 때로는 Bean 간의 종속성이 덜 직접적인 경우도 있습니다. 데이터베이스 드라이버 등록
기본적으로 ApplicationContext 구현은 초기화 프로세스의 일부로 모든 싱글톤 Bean을 적극적으로 생성하고 구성합니다. 일반적으로 이러한 사전 인스턴스화는 구성이나 주변 환경의 오류가 몇 시간 또는 며칠 후에 발견되는 것이 아니라 즉시 발견되기 때문에 바람
Spring 컨테이너는 공동 작업하는 Bean 간의 관계를 자동으로 연결할 수 있습니다. ApplicationContext의 내용을 검사하여 Spring이 빈에 대한 협력자(다른 빈)를 자동으로 해결하도록 할 수 있습니다. Autowiring에는 다음과 같은 장점이 있
대부분의 애플리케이션 시나리오에서 컨테이너에 있는 대부분의 Bean은 싱글톤입니다. 싱글톤 Bean이 다른 싱글톤 Bean과 협력해야 하거나 싱글톤이 아닌 Bean이 다른 싱글톤이 아닌 Bean과 협력해야 하는 경우 일반적으로 하나의 Bean을 다른 Bean의 특성으로
Bean 정의를 생성할 때 해당 Bean 정의에 의해 정의된 클래스의 실제 인스턴스를 생성하기 위한 레시피를 생성합니다. 빈 정의가 레시피라는 생각은 중요합니다. 왜냐하면 클래스와 마찬가지로 단일 레시피에서 많은 객체 인스턴스를 생성할 수 있다는 뜻이기 때문입니다.특정
Spring Framework는 Bean의 특성을 사용자 정의하는 데 사용할 수 있는 다양한 인터페이스를 제공합니다. 이 섹션에서는 다음과 같이 그룹화합니다. 수명주기 콜백 ApplicationContextAware 및 BeanNameAware 기타 인식 인터페이스Sp
Bean 정의에는 생성자 인수, 속성 값, 초기화 메소드, 정적 팩토리 메소드 이름 등과 같은 컨테이너별 정보를 포함한 많은 구성 정보가 포함될 수 있습니다. 하위 Bean 정의는 상위 정의에서 구성 데이터를 상속합니다. 하위 정의는 일부 값을 재정의하거나 필요에 따라
일반적으로 애플리케이션 개발자는 ApplicationContext 구현 클래스를 하위 클래스로 분류할 필요가 없습니다. 대신, 특수 통합 인터페이스 구현을 플러그인하여 Spring IoC 컨테이너를 확장할 수 있습니다. 다음 몇 섹션에서는 이러한 통합 인터페이스에 대해
Spring을 구성하는데 XML보다 주석이 더 나은가요?주석 기반 구성의 도입으로 인해 이 접근 방식이 XML보다 "더 나은"지에 대한 의문이 제기되었습니다. 짧은 대답은 “상황에 따라 다르다”입니다. 긴 대답은 각 접근 방식에는 장단점이 있으며 일반적으로 어떤 전략이
이 섹션에 포함된 예제에서는 JSR 330의 @Inject 주석을 Spring의 @Autowired 주석 대신 사용할 수 있습니다. 자세한 내용은 여기를 참조하세요. 다음 예제와 같이 @Autowired 주석을 생성자에 적용할 수 있습니다.Spring Framework
유형별 자동 연결은 여러 후보로 이어질 수 있으므로 선택 프로세스를 더 많이 제어해야 하는 경우가 많습니다. 이를 달성하는 한 가지 방법은 Spring의 @Primary 주석을 사용하는 것입니다. @Primary는 여러 Bean이 단일 값 종속성에 자동 연결될 후보인
@Primary는 하나의 기본 후보를 결정할 수 있는 경우 여러 인스턴스에서 유형별 자동 배선을 사용하는 효과적인 방법입니다. 선택 프로세스에 대한 더 많은 제어가 필요한 경우 Spring의 @Qualifier 주석을 사용할 수 있습니다. 한정자 값을 특정 인수와 연관
@Qualifier 주석 외에도 Java 일반 유형을 암시적 한정 형식으로 사용할 수 있습니다. 예를 들어 다음과 같은 구성이 있다고 가정합니다.이전 Bean이 일반 인터페이스(즉, Store<String> 및 Store<Integer>)를 구현한다고 가정하
CustomAutowireConfigurer는 Spring의 @Qualifier 주석이 추가되지 않은 경우에도 사용자 정의 한정자 주석 유형을 등록할 수 있는 BeanFactoryPostProcessor입니다. 다음 예에서는 CustomAutowireConfigurer
Spring은 또한 필드 또는 Bean 속성 설정자 메소드에서 JSR-250 @Resource 주석(jakarta.annotation.Resource)을 사용하여 주입을 지원합니다. 이는 Jakarta EE(예: JSF 관리 Bean 및 JAX-WS 엔드포인트)의 일반
@Value는 일반적으로 외부화된 속성을 주입하는 데 사용됩니다. 다음 구성을 사용합니다 그리고 다음 application.properties 파일: 이 경우 카탈로그 매개변수와 필드는 MovieCatalog 값과 동일합니다. 기본 관대한 내장 값 확인자는 Sp
CommonAnnotationBeanPostProcessor는 @Resource 주석뿐만 아니라 JSR-250 라이프사이클 주석(jakarta.annotation.PostConstruct 및 jakarta.annotation.PreDestroy)도 인식합니다. Spri
이 장의 대부분의 예제는 XML을 사용하여 Spring 컨테이너 내에서 각 BeanDefinition을 생성하는 구성 메타데이터를 지정합니다. 이전 섹션(주석 기반 컨테이너 구성)에서는 소스 수준 주석을 통해 많은 구성 메타데이터를 제공하는 방법을 보여줍니다. 그러나
Dependency Injection with @Inject and @Named @Named and @ManagedBean: Standard Equivalents to the @Component Annotation Limitations of JSR-330 Stand
Spring의 Java 구성 지원의 핵심 아티팩트는 @Configuration 주석이 달린 클래스와 @Bean 주석이 달린 메서드입니다.@Bean 주석은 메서드가 Spring IoC 컨테이너에서 관리할 새 객체를 인스턴스화, 구성 및 초기화함을 나타내는 데 사용됩니다.
다음 섹션에서는 Spring 3.0에 도입된 Spring의 AnnotationConfigApplicationContext를 문서화합니다. 이 다재다능한 ApplicationContext 구현은 @Configuration 클래스뿐만 아니라 일반 @Component 클래스
@Bean은 메소드 수준 주석이며 XML 요소와 직접적으로 유사합니다. 주석은 다음과 같이 에서 제공하는 일부 속성을 지원합니다.init-methoddestroy-methodautowiringname.@Configuration-annotated 또는 @Componen
@Configuration은 객체가 Bean 정의의 소스임을 나타내는 클래스 수준 주석입니다. @Configuration 클래스는 @Bean 주석이 달린 메소드를 통해 Bean을 선언합니다. @Configuration 클래스의 @Bean 메소드에 대한 호출은 Bean
Spring의 Java 기반 구성 기능을 사용하면 주석을 작성하여 구성의 복잡성을 줄일 수 있습니다. 요소가 Spring XML 파일 내에서 구성 모듈화를 돕기 위해 사용되는 것과 마찬가지로 @Import 주석은 다음 예제와 같이 다른 구성 클래스에서 @Bean 정의를
환경 인터페이스는 애플리케이션 환경의 두 가지 주요 측면인 프로필과 속성을 모델링하는 컨테이너에 통합된 추상화입니다.프로필은 주어진 프로필이 활성화된 경우에만 컨테이너에 등록되는 명명된 논리적 빈 정의 그룹입니다. Bean은 XML 또는 주석으로 정의된 프로필에 할당될
LoadTimeWeaver는 클래스가 JVM(Java Virtual Machine)에 로드될 때 클래스를 동적으로 변환하기 위해 Spring에서 사용됩니다.로드 시간 위빙을 활성화하려면 다음 예제와 같이 @Configuration 클래스 중 하나에 @EnableLoad
장 소개에서 논의한 것처럼 org.springframework.beans.factory 패키지는 프로그래밍 방식을 포함하여 Bean을 관리하고 조작하기 위한 기본 기능을 제공합니다. org.springframework.context 패키지는 BeanFactory 인터페
BeanFactory API는 Spring의 IoC 기능에 대한 기본 기반을 제공합니다. 특정 계약은 Spring의 다른 부분 및 관련 타사 프레임워크와 통합하는 데 주로 사용되며 DefaultListableBeanFactory 구현은 상위 수준 GenericAppli