
스프링 컨테이너에서 자바 객체들에 대한 생성 주기를 관리한다.
여기서 관리 대상인 자바 객체를 빈이라고 부르고
정확히는 BeanFactory, ApplicationContext 컨테이너로 나뉘는데
특별한 이유가 없다면 일반적으로 ApplicationContext 컨테이너를 사용한다고 한다.
등록된 빈을 통해서 객체들을 항상
new MemberService();처럼 새로 만들지 않고 싱글톤 방식으로
IoC를 위해 개발자가 아닌 스프링 컨테이너가 관리하여 객체의 의존 관계를 관리하는데에 있다.
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory("host", 1234);
}
}
@Component
public class JwtIssuer {
private String jwtPwd;
public String parser(String jwt){
return jwtPwd + jwt;
}
}
결국 외부 라이브러리를 사용할 때는 @Bean을
개발자가 직접 정의한 class는 @Component를 사용해 빈으로 등록한다.