빈 생성 관련 어노테이션
- 빈 생성(설정)을 위해 클래스 위에 추가되는 어노테이션
- 클래스 이름 위에 붙이면 해당 클래스 파일에 대한 bean 자동 생성 (xml 파일에서 bean 생성하지 X)
- 생성되는 빈의 이름은 클래스 이름에서 첫 문자만 소문자
- ex) NameService 클래스의 빈 이름은 nameService
- @Component
- @Controller
- @Service
- @Repository
- @Configuration
- @Bean
xml 설정 파일에서 필요한 작업
- 어노테이션을 이용하기 위해 xml 설정 파일에서 필요한 작업
- xml 설정 파일에 context 네임스페이스 추가
- <context:component-scan base-package="클래스가 포함된 패키지 명" />
- @Component 어노테이션이 적용된 클래스를 빈으로 등록
- 빈으로 등록될 클래스가 들어있는 패키지 지정
- 상위 패키지를 지정하면 하위 패키지까지 빈으로 등록될 클래스를 찾음
- <context:annotation-config /> 필요 없음
@Component
- 클래스를 빈으로 등록(부품 등록)
- 빈 id를 지정할 수 있음
- @Component("빈 이름")
- xml의 <bean id="빈 이름">에 해당
빈 생성 어노테이션 예제
- @Component 어노테이션 이용한 클래스에 대한 빈 등록
- 패키지 : com.di.spring_annotation_component
- 클래스 생성
- INameService 인터페이스
- NameService : 빈 생성
- @Component 어노테이션 추가
- NameController : 빈 생성
- @Component 어노테이션 추가
- NameService 클래스 사용
- NameMain
- application-context2.xml 사용
- NameController 클래스 객체 사용
- @Component 어노테이션을 사용하여 클래스의 빈으로 등록되었으므로 getBean() 메소드로 가져다 사용
- 설정 파일 : application-context2.xml
- <context:component-scan base-package="패키지명" />
@Component 어노테이션의 의미론적 어노테이션
- @Component : 일반적인 컴포넌트(총칭)
- 특화된 @Component 어노테이션
- 클래스의 역할에 따라 의미론적으로 구분
- @Controller 컴포넌트
- @Service 컴포넌트
- @Repository 컴포넌트
@Component : 일반적인 컴포넌트로 등록되기 위한 클래스에 사용
@Controller : 컨트롤러 클래스에 사용 (의미론적)
@Service : 서비스 클래스에 사용(의미론적)
@Repository : DAO 클래스 또는 Repository 클래스에 사용(의미론적)
Spring MVC 구성에 따른 어노테이션 사용
Service
- Controller로부터 데이터 서비스를 위임받아서 사용자의 요구 사항에 맞는 서비스 제공
- 업무 단위 또는 트랜잭션 단위로 서비스 담당
- DAO로부터 데이터 제공 받음
- DAO를 통해서 데이터를 DB에 저장
@Component 어노테이션의 의미론적 어노테이션 예제
- @Component의 위치에 다음 어노테이션으로 변경
- @Controller
- @Service
- 패키지 : com.di.spring_di_annotation_component2
- @Component 어노테이션을 사용한 각 클래스의 기능에 맞춰 변경
- NameService 클래스 : @Service
- NameController 클래스 : Controller
설정 담당 자바 클래스에서 사용하는 어노테이션
@Configuration
- 빈 설정 클래스임을 나타내는 어노테이션
@Bean
- 빈을 생성해서 반환
- 빈을 생성하는 메소드 앞에 기술
- @Bean이 붙은 메소드는 반드시 Bean 메소드 반환
- @Bean 어노테이션을 사용하는 경우
- 일반적으로 @Controller, @Service, @Repository 어노테이션을 붙이지 않는 클래스의 빈 생성에 사용
@Configuration / @Bean 어노테이션 예제
- 패키지 : com.di.spring_di_annotation_configuration_bean
- 클래스 생성
- BMI
- Member
- ApplicationConfig
- MemberMain
'Back > Spring' 카테고리의 다른 글
Spring - REST, Ajax (0) | 2022.01.11 |
---|---|
Spring - AOP(Aspect Oriented Programming) (0) | 2022.01.05 |
Spring - Singleton(싱글톤) (0) | 2022.01.05 |
의존성(Dependency) (0) | 2022.01.05 |
스프링 프레임워크 종류 및 특징 (0) | 2022.01.05 |