[Spring] Configuration metadata(빈 설정 메타정보)
CS 공부 16일차. 오늘도 역시 토비의 스프링 3.1을 읽고 내용을 정리해 보았습니다.
BeanDefinition
- 순수한 오브젝트로 표현되는 빈 생성 정보
- 이름만 다르게 해서 재사용 가능.
- BeanDefinition에 이름 정보는 포함되지 않지만 나중에 등록될 때 이름을 부여해 줄 수 있다.
- beanClassName, parentName, scope, annotationMetaData 등을 설정할 수 있다.
Bean 종류
Application Logic Bean
- DAO, Service Object, Controller Object 등
Application Infra Bean
- DataSource 등
Container Infra Bean
-
빈 생성시에 프록시 생성같은 작업을 지원하는 빈
-
<context:component-scan />, @ComponentScan 등
Bean 등록 방법
- XML 태그
<bean id=“hello” class=“springbook.learningtest.spring.ioc.bean.Hello”></bean>
- XML 전용태그
<jdbc:embedded-database type=“HSQL”></jdbc:embedded-database>
- Annotation
- Default Bean Scanner로 Stereotype Annotation 사용
- 자바 코드
- 하나의 클래스 안에 여러개의 빈을 정의할 수 있다. @을 이용해 메타정보를 추가.
- @Configuration + @Bean
- AnnotationConfigWebApplicationContext를 사용해야 한다.
- @Configuration을 붙이지 않고 설정한 @Bean은 싱글톤이 보장되지 않는다.
XML
- 장점 : 모든 빈을 XML에서 확인할 수 있다. 설정정보를 자바 코드에서 분리하여 POJO 코드를 유지할 수 있다.
- 단점 : 빈의 개수가 많아지면 관리가 번거롭다.
Bean Scanner
-
장점 : 컴파일러나 IDE를 통한 타입 검증이 가능하다. 복잡한 빈 설정이나 초기화 작업을 손쉽게 적용할 수 있다.
-
단점 : 전용 태그 사용이 어렵다.
-
특정 @이 붙은 클래스를 자동으로 찾아서 빈으로 등록해주는 방식
-
지정된 경로 아래에 있는 모든 클래스를 대상으로 필터를 적용
-
Bean Scanner가 감지한 클래스는 클래스 이름을 아이디로 사용하여 빈으로 등록된다.(ex : id=sampleClass, classname=SampleClass)
-
아이디를 직접 지정할 수도 있다.(ex: @Component(“sampleID”))
-
한 클래스당 하나의 빈만 등록할 수 있다.
-
XML로 등록하거나(<context: component-scan>) Bean Scanner가 내장된 Application Context를 사용하여 이용할 수 있다.
-
서블릿 컨텍스트와 루트 컨텍스트에서 중복으로 하나의 빈을 스캐닝 할 수 있으니 범위를 잘 설정해야 한다.
Stereotype Annotation
- 디폴트 필터에 적용되는 애노테이션
- @Component
- @Repository : DAO 또는 Repository 클래스에 사용
- @Service
- @Controller : Presentation 계층의 MVC controller에 사용.
Bean Factory
- 오브젝트 생성과 의존관계 주입을 담당하는 컨테이너
- Spring Container라고도 한다.
Factory Bean
-
생성자 대신 오브젝트를 생성해주는 코드를 통해 빈 오브젝트를 생성
-
빈 오브젝트를 만들어주는 기능만 제공
-
FactoryBean, factory-method, @Bean 메소드 등을 이용해 만들 수 있다.
ID & Name
id
-
XML로 정의한다면 XML문서 내에서 고유해야 한다.
-
공백이 들어갈 수 없다.
-
첫글자는 알파벳과 언더바(_), 나머지 글자는 여기에 숫자와 . 도 허용된다.
-
특수문자는 사용할 수 없다.
-
한글 사용 가능
-
타입의 첫글자를 소문자로 바꿔서 사용한다. 따라서 생략 가능
name
- .나 ;을 이용하여 여러 이름 지정 가능
초기화 메소드
-
빈 오브젝트가 생성되고 DI 된 후에 실행되는 메소드
-
InitializingBean, init-method, @PostConstruct, @Bean(init-method)를 사용하여 설정할 수 있다.
제거 메소드
-
컨테이너가 종료될 때,빈이 사용한 리소스를 반환하거나 종료 전에 처리해야 할 작업을 수행한다.
-
DisposableBean, destroy-method, @PreDestroy, @Bean(destroyMethod)를 사용하여 설정할 수 있다.
Author And Source
이 문제에 관하여([Spring] Configuration metadata(빈 설정 메타정보)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@betty214/Spring-Configuration-metadata빈-설정-메타정보저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)