BE Study

[BE Study] Day5,6 Controller 분리하기/ Spring Container, Bean

고고잉93 2024. 2. 26. 22:37
728x90

Layered Architecture

🍫 5일차 과제

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);

        System.out.print("숫자를 입력하세요 : ");
        int a = sc.nextInt(); // 주사위를 던진 횟수

        System.out.print("주사위 면의 개수를 입력하게요 : ");
        int b = sc.nextInt();

        int[] result = new int[b];
        for (int i = 0; i < a; i++) {
            int c = (int) (Math.random() * b);
            result[c]++;
        }
        for (int i = 0; i < b; i++) {
            System.out.println(i + 1 + "은 " + result[i] + "번 나왔습니다.");
        }
    }
}

 


■스프링 빈이란?

서버가 시작되면, 스프링 서버 내부에 거대한 컨테이너(상자)를 만든다!

이 컨테이너 안에는 클래스가 들어간다. 이때 다양한 정보와 함께 인스턴스화가 이루어진다.

1. 스프링 컨테이너(클래스 저장소)가 시작

2. 많은 스프링 빈(기본)들이 등록.

3. 우리가 설정한 스프링 빈이 등록

 

컨테이너 내부에서 각각의 빈들의 관계가 형성

 

@Primary : 우선권을 설정하는 어노테이션

 

■ 빈을 등록하는 방법

@Configuration

  - 클래스에 붙이는 어노테이션

  - @Bean을 사용할 때 함께 사용해 주어야 한다!

 

@Bean

  - 메소드에 붙이는 어노테이션

  - 메소드에 반환되는 객체를 스프링 빈에 등록한다.

 

@Component(@Service, @RestController, @Repository)

  - 주어진 클래스를 '컴포넌트'로 간주한다.

  - 이 클래스들은 스프링 서버가 뜰 때 자동으로 감지된다.

  - Controller, Service, Repository아닌 개발자가 직접 작성한 클래스를 스프링 빈으로 등록할때 사용

 

■ 빈을 주입받는 방법

1. 생성자를 통해 주입받는 방식!(권장)

2. Setter사용 : 누군가 setter를 사용하면 오작동

3. 필드에 사용 : 테스트가 어려움

 

■ @Qualifier

여러 후보군이 있을때 특정 클래스를 지정하여 가져오게 할 수 있다.

   1. 직접 @Qualifier("클래스명")로 호출하기

   2. 클래스에 @Qualifier("빈 이름") 작성 후 이름으로 호출하기

 

@Primary vs @Qualifier → Qualifier

 

강의: https://inf.run/Hywa

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인

Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들

www.inflearn.com

 

728x90