spring bean

agnusdei·2023년 9월 3일
0

스프링(Spring)에서 "Bean"은 애플리케이션 컨텍스트(ApplicationContext) 내에서 관리되는 객체를 가리킵니다. 스프링 프레임워크는 객체 지향 프로그래밍을 지원하며, 이 객체들을 "Bean"으로 관리하고 제어합니다. 이러한 객체들은 스프링 컨테이너(ApplicationContext)에 의해 생성, 구성, 관리되며, 이를 통해 의존성 주입(Dependency Injection)과 관련된 작업들을 수행할 수 있습니다.

아래는 스프링 Bean에 대한 상세한 설명과 코드 예시입니다.

스프링 Bean의 특징:

  1. 생성 및 관리: 스프링 컨테이너는 Bean의 라이프사이클을 관리하며, Bean을 생성하고 초기화하며, 필요한 경우 소멸시킵니다. 이로써 개발자는 객체의 생성 및 관리에 대한 걱정을 덜 수 있습니다.

  2. 의존성 주입: 스프링은 Bean 간의 의존성을 주입해주는 기능을 제공합니다. 이를 통해 객체 간의 결합도를 낮추고 코드의 재사용성과 테스트 용이성을 향상시킵니다.

  3. 스코프: Bean은 여러 가지 스코프를 가질 수 있습니다. 예를 들어 싱글톤(Singleton), 프로토타입(Prototype), 세션(Session), 요청(Request) 등의 스코프를 설정할 수 있습니다.

스프링 Bean 등록과 코드 예시:

  1. XML 기반 설정:
<!-- XML 설정 파일에서 Bean 정의 -->
<bean id="userService" class="com.example.UserService">
    <property name="userRepository" ref="userRepository"/>
</bean>

<bean id="userRepository" class="com.example.UserRepository"/>
  1. Annotation 기반 설정:
@Configuration
public class AppConfig {

    @Bean
    public UserService userService() {
        return new UserService(userRepository());
    }

    @Bean
    public UserRepository userRepository() {
        return new UserRepository();
    }
}
  1. Component Scan 및 Annotation 기반 설정:
@Component
public class UserService {

    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    // ...
}

@Component
public class UserRepository {
    // ...
}
  1. Java 기반 설정:
@Configuration
public class AppConfig {

    @Bean
    public UserService userService() {
        return new UserService(userRepository());
    }

    @Bean
    public UserRepository userRepository() {
        return new UserRepository();
    }
}

위의 코드 예시에서 @Bean 어노테이션을 사용하거나 XML 설정 파일에서 <bean> 요소를 사용하여 스프링 컨테이너에 Bean을 등록합니다. 이렇게 등록된 Bean은 스프링 컨테이너에 의해 생성 및 관리되며, 다른 Bean과 의존성 주입이 가능합니다.

스프링에서 Bean을 사용하려면 컨테이너를 구성하고 설정해야 하며, 애플리케이션에서 필요한 곳에서 이러한 Bean을 주입받아 사용할 수 있습니다. 이러한 방식으로 스프링은 애플리케이션의 객체 관리와 의존성 주입을 효과적으로 관리하고 유지보수를 쉽게 만들어줍니다.

0개의 댓글