CS 공부 16일차. 오늘도 역시 토비의 스프링 3.1을 읽고 내용을 정리해 보았습니다.
Application Logic Bean
Application Infra Bean
Container Infra Bean
빈 생성시에 프록시 생성같은 작업을 지원하는 빈
<context:component-scan />, @ComponentScan 등
<bean id=“hello” class=“springbook.learningtest.spring.ioc.bean.Hello”></bean>
<jdbc:embedded-database type=“HSQL”></jdbc:embedded-database>
장점 : 컴파일러나 IDE를 통한 타입 검증이 가능하다. 복잡한 빈 설정이나 초기화 작업을 손쉽게 적용할 수 있다.
단점 : 전용 태그 사용이 어렵다.
특정 @이 붙은 클래스를 자동으로 찾아서 빈으로 등록해주는 방식
지정된 경로 아래에 있는 모든 클래스를 대상으로 필터를 적용
Bean Scanner가 감지한 클래스는 클래스 이름을 아이디로 사용하여 빈으로 등록된다.(ex : id=sampleClass, classname=SampleClass)
아이디를 직접 지정할 수도 있다.(ex: @Component(“sampleID”))
한 클래스당 하나의 빈만 등록할 수 있다.
XML로 등록하거나(<context: component-scan>) Bean Scanner가 내장된 Application Context를 사용하여 이용할 수 있다.
서블릿 컨텍스트와 루트 컨텍스트에서 중복으로 하나의 빈을 스캐닝 할 수 있으니 범위를 잘 설정해야 한다.
생성자 대신 오브젝트를 생성해주는 코드를 통해 빈 오브젝트를 생성
빈 오브젝트를 만들어주는 기능만 제공
FactoryBean, factory-method, @Bean 메소드 등을 이용해 만들 수 있다.
id
XML로 정의한다면 XML문서 내에서 고유해야 한다.
공백이 들어갈 수 없다.
첫글자는 알파벳과 언더바(_), 나머지 글자는 여기에 숫자와 . 도 허용된다.
특수문자는 사용할 수 없다.
한글 사용 가능
타입의 첫글자를 소문자로 바꿔서 사용한다. 따라서 생략 가능
name
빈 오브젝트가 생성되고 DI 된 후에 실행되는 메소드
InitializingBean, init-method, @PostConstruct, @Bean(init-method)를 사용하여 설정할 수 있다.
컨테이너가 종료될 때,빈이 사용한 리소스를 반환하거나 종료 전에 처리해야 할 작업을 수행한다.
DisposableBean, destroy-method, @PreDestroy, @Bean(destroyMethod)를 사용하여 설정할 수 있다.