Spring Bean이란?
-> Spring에서 관리하는 것들을 통칭, Configuration 클래스에서 메서드를 정의해서 Spring Bean을 생성할 수 있다.
-> 기본적으로 Bean의 이름은 메서드의 이름을 사용하지만 @Bean(name ="example")과 같이 사용자 지정 이름도 사용 가능하다.
-> 기존에 있던 Bean을 이용해서 새로운 Bean을 생성하는 것도 가능하다. 이때 만드는 방식은 2가지(Parameter, MethodCall)
record?
-> JDK 16이상 지원하는 기능으로 기본적인 생성자들이나 게터, 세터, toString 메서드 등 기본적인 메서드를 만들어 준다
package com.in28minutes.learnspringframework;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
record Person(String name, int age, Address add){};
record Address(String firstLine, String city){};
@Configuration
public class HelloWorldConfiguration {
@Bean
public String name(){
return "Park";
}
@Bean
public int age(){
return 24;
}
@Bean
public Person person(){
return new Person("Son",30, new Address("Tottenham","London"));
}
@Bean
public Person person2MethodCall(){
return new Person(name(),age(),add()); // using name, age
}
@Bean
public Person person3Parameters(String name, int age, Address address3){
return new Person(name,age,address3);
}
@Bean(name="address")
public Address add(){
return new Address("Baker street","London");
}
@Bean(name="address3")
public Address add2(){
return new Address("trafford","Manchester");
}
}
Bean 검색?
-> Bean의 이름으로도 검색 가능하지만 Address.class 와 같이 유형으로도 검색이 가능하다.
System.out.println(context.getBean("address"));
System.out.println(context.getBean(Address.class));
Spring Container?
-> Spring bean을 관리하고 bean의 생명주기도 관리한다. 다른 말로는 IOC Container, Spring Context라고도 한다. 여기서 IOC라는 것은 '제어의 역전'을 뜻하는데 이 용어에 대한 설명은 나중에 알아보는 것으로 하자

위 사진에서는 IOC Container에 클래스와 설정 파일을 넣으면 출력으로 Ready System 이라는 것을 내놓는 것을 볼 수 있다.
즉 Spring Container, Spring Context IOC Container든 모두 같은 말이며 이러한 용어가 뜻하는 것은 클래스와 설정 등을 인풋으로 주면 시스템을 만드는 것을 뜻하는 것을 알고 있으면 된다.
IOC Container 의 2가지 종류?
1. Bean Factory -> 가장 기본적인 Spring Container
2. Application Context -> 엔터프라이즈 전용 기능이 있는 고급 Spring Container. 웹 어플리케이션을 구축하거나 국제화가 필요한 경우 또는 Spring AOP or Spring 측면 지향 프로그래밍과 결합하는 시나리오인 경우에 사용한다.
사실 대부분의 엔터프라이즈 어플리케이션에는 이러한 기능들이 필요하므로 가장 많이 자주 사용하는 컨테이너는 Application Context로 봐야한다. Application Context는 웹 앱, REST API, MSA에 사용하는 것이 좋다. 대신 메모리에 심한 제약이 있는 경우에 예를 들어 IOT에 사용되는 앱이나 기타 임베디드 앱의 경우 Bean Factory를 사용한 것이 더 좋다.
'SpringBoot' 카테고리의 다른 글
| [Udemy] Spring Boot 3 - Section 4 : Spring Framework 고급기능 살펴보기 (1) | 2023.11.09 |
|---|---|
| [Udemy] Spring Boot 3 - 의존성 주입 (2) | 2023.11.07 |
| [Udemy] Spring Boot 3 - @Primary VS @Qualifier (1) | 2023.11.02 |
| [Udemy] Spring Boot 3 - Java Bean, POJO, Spring Bean 차이 (6) | 2023.11.01 |
| [Udemy] SpringBoot 3 - 강한 결합 vs 느슨한 결합 (4) | 2023.10.31 |