Spring Core

[Spring] 스프링 빈(Bean) 등록 방법

fiat_lux 2024. 5. 30. 16:44

이글은 Spring Bean 등록 하는 방법을 설명하는 글 이다
이거에 앞서 Spring Bean을 알고 싶으면 아래 글을 참고 하면 된다

https://hyeonni.tistory.com/65

 

[Spring] 스프링 빈(Bean) 이란?

이글은 Spring Bean을 설명하는 글이다 이거에 앞서 Java Bean을 알고 싶으면 아래 글을 참고 하면 된다https://hyeonni.tistory.com/61 [Spring] Java Bean? Spring Bean?이글은 Spring  Bean을 설명하기에 앞서 Java Bean이

hyeonni.tistory.com


Spring Bean 등록

  • xml에 등록
  • 자바 설정
  • 어노테이션

ex) Player.java

package com.example;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Player {
    private String name;
    private int age;
}

 

 

1. 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">

    <!-- 빈 정의 -->
    <bean id="player" class="com.example.Player">
        <property name="name" value="value1" />
        <property name="age" value="value2" />
    </bean>

</beans>

 

 

 

2. 자바 설정 파일을 통한 빈 등록

 

  • 자바 설정 파일을 사용하여 빈 등록을 한다 (AppConfig)
  • @Configuration과 @Bean을 사용하여 자바 클래스에서 빈을 정의합니다.
  • 타입 안전성을 보장하고, 코드 기반 설정을 선호하는 경우 유용하다
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

    @Bean
    public Player player() {
        Player player = new Player();
        player.setProperty1("value1");
        player.setProperty2("value2");
        
        return player;
    }
}

 

 

3. 어노테이션을 통한 빈 등록

 

  • 스프링 어노테이션을 사용하여 빈 등록한다
  • @Component, @Service, @Repository, @Controller 등을 사용하여 클래스 자체에 빈을 정의하고
  • @ComponentScan을 통해 패키지를 스캔합니다.
  • 설정을 간결하게 유지하고, 클래스 선언과 설정을 함께 관리할 수 있다

 

Player.java

package com.example;

import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;

@Getter
@Setter
@Component
public class Player {
    private String name;
    private int age;
}

 

스프링 설정 클래스 (AppConfig.class)

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
    // 빈 스캔을 통해 자동으로 빈을 등록 한다
}

 

등록한 후에 사용법

 

  • 빈을 등록한 후 애플리케이션에서 빈을 가져와 사용할 수 있다

Main.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    public static void main(String[] args) {
        // 자바 설정을 사용하는 경우
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        
        // XML 설정을 사용하는 경우
        // ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        // 빈 가져오기
        Player player = context.getBean(Player.class);
       
       	//비즈니스 로직....
    }
}