Bean
Spring IoC 컨테이너가 관리하는 자바 객체
Bean은 일반 적으로 Spring Framwork에서 제공되는
BeanFactory 또는 ApplicationContext와 같은 IoC 컨테이너에서 생성, 초기화 및 관리가 된다.
Bean은 스프링 어플리케이션의 핵심 구성요소이며, 일반적으로 Java 클래스로 구현되며
XML, 어노테이션 또는 자바 기반 구성으로 정의될 수 있다.
스프링 빈 등록 방식
Component Scan
@Component를 명시하여 빈을 추가하는 방법
@Component를 붙이면 스프링이 자동적으로 스프링 컨테이너에 빈을 등록한다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface Component {
컴포넌트 스캔의 대상
@Controller
스프링 MVC 컨트롤러로 인식
@Repository
스프링 데이터 접근 계층으로 인식하고 해당 계층에서 발생하는 예외는 모두
DataAccessException으로 변환된다.
@Service
특별한 처리는 하지 않으나, 개발자들이 핵심 비즈니스 계층을 인식하는데 도움을 준다.
@Configuration
스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다.
Java 코드로 등록
@Configuration 어노테이션을 활용한다.
@Configuration
public class AppConfig {
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
}
빈을 등록하기 위해 인스턴스를 생성하는 메서드 위에
@Bean을 명시하면 된다.
수동 등록
거의 사용하지 않지만 "ApplicationContext"를 호출하여 수동으로 설정 파일을
이용하여 빈을 수동으로 등록할 수도 있다.
public class Main {
public static void main(String[] args) {
final ApplicationContext beanFactory = new AnnotationConfigApplicationContext(AppConfig.class);
final AppConfig bean = beanFactory.getBean("appConfig", AppConfig.class);
}
}
내용 참고 - Easy is Perfect -
내용 참고 - 느리더라도 꾸준하게 -
'자바 탐구' 카테고리의 다른 글
자바) 어노테이션 (0) | 2023.04.25 |
---|---|
스프링) HTTP 상태코드 (0) | 2023.04.25 |
스프링) 제어의 역전(Inversion of Control) (0) | 2023.04.23 |
스프링) 의존관계 주입(Dependency Injection) (0) | 2023.04.23 |
스프링 부트) Dependency : Spring Boot DevTools (0) | 2023.04.21 |