Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

코딩 이래요래

Spring Boot에서 사용되는 다양한 Bean 등록 방법 본문

위클리 페이퍼

Spring Boot에서 사용되는 다양한 Bean 등록 방법

강범호 2025. 4. 29. 14:34

Spring Boot - Bean 개념과 등록 방법 정리

1. Bean이란?

  • Spring IoC Container에 의해 관리하는 객체를 말함
  • Spring에서는 개발자가 직접 생성하고 관리하던 객체들을 IoC Container가 대신 생성하고 생명주기 까지 관리하며, 이렇게 등록된객체를 Bean이라고 함

2. IoC Container란?

  • IoC (Inversion of Control, 제어의 역전) 이란, 객체 생성과 의존성 주입(Dependency Injection, DI) 제어권을 개발자가 아닌 Spring IoC Container에 위임하는 개념
  • 덕분에 개발자는 객체 간 관계에 신경 쓰지 않고, 비즈니스 로직 구현에 집중할 수 있음

3. ApplicationContext란?

  • ApplicationContext는 Spring IoC Container의 최상위 인터페이스인 BeanFactory를 상속받아 확장한 인터페이스
  • BeanFactory : 가장 기본적인 IoC Container 기능 (Bean 생성, DI 관리)
  • ApplicationContext : BeanFactory의 기능에 더해 메세지 소스 처리, 이벤트 발행, 다양한 애플리케이션 스코프 지원 등 추가 기능을 제공

💡일반적으로  SpringBoot에서는 ApplicationContext를 통해 Bean을 조회하거나 애플리케이션 전반의 환경 설정을 관리함

Spring Boot - Bean 등록 방법

1. 어노테이션 기반 등록 (@Component 계열)

Spring은 @ComponentScan을 통해 특정 패키지 이하에 있는 클래스 중 @Component 어노테이션이 붙은 클래스를 찾아 자동으로 Bean으로 등록함

대표 어노테이션

  • @Component
  • @Controller
  • @Service
  • @Repository

* 위 어노테이션들은 모두 내부적으로 @Component를 포함하고 있음

 

💡SpringBoot는 기본적으로 @SpringBootApplication이 선언된 클래스의 패키지 하위를 스캔함

  • @SpringBootApplication은 @ComponentScan을 포함하고 있음
  • @SpringBootApplication 클래스가 최상단 패키지에 없으면, @ComponentScan(basePackages = "path")를 명시해줘야함

2. 수동 등록 - @Configuration + @Bean

  • @Configuration 클래스 내부에서 @Bean 메서드를 정의하여 Bean으로 등록함
@Configuration
public class AppConfig {

    @Bean
    public ExampleComponent exampleComponent() {
        return new ExampleComponent(); // return하는 객체를 Bean으로 등록함
    }
}
  • 복잡한 객체 생성 로직이 필요할 때 사용함

3. XML 기반 등록 (권장되지 않음)

  1. Java 클래스
public class Dog {
    public void bark() {
        System.out.println("멍멍!");
    }
}

2. XML 파일 (applicationContext.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- Dog 클래스를 Bean으로 등록 -->
    <bean id="dog" class="com.example.Dog"/>
</beans>
  • <bean> 태그로 등록

3. Java 코드에서 Bean 사용

public class Main {
    public static void main(String[] args) {
        // XML 설정 파일을 읽어서 Spring Container 생성
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        // id가 "dog"인 Bean을 가져오기
        Dog dog = context.getBean("dog", Dog.class);

        // 사용
        dog.bark(); // 출력: 멍멍!
    }
}
  • ClassPathXmlApplicationContext를 통해 작성한 xml 설정 파일을 읽어 container 생성
  • context를 이용해 등록한 bean을 꺼내와 사용

'위클리 페이퍼' 카테고리의 다른 글

위클리 페이퍼 8주차  (3) 2025.05.30
위클리 페이퍼 - 7주차  (3) 2025.05.25
AOP (Aspect Oriented Programming)  (0) 2025.05.18
@Controller vs @RestController  (0) 2025.05.13
Web Server ?? Web Application Server??  (0) 2025.04.29