[포스코x코딩온] 웹개발자 풀스택 부트캠프8기

[포스코x코딩온] Spring Boot (Bean, Annotation)

항상 발전하는 개발자 2023. 10. 30. 19:23
728x90

Spring Boot

 

Bean

  • Spring IoC(제어의 역전) 컨테이너가 관리하는 Java 객체
제어의 역전이란, 객체의 생성 및 제어권을 사용자가 아닌 스프링에 맡기는 것이다. 이전까지는 사용자가 new연산을 통해 객체를 생성하고 메소드를 호출했지만, IoC가 적용된 경우에는 이러한 객체의 생성과 사용자의 제어권을 스프링에게 넘긴다. 
  • Spring에서는 new를 이용해 만들어진 객체가 아니라 Spring에서 관리하는 Bean이라는 객체를 이용한다.
  • 장점
    • 의존성 관리가 용이하다.
    • 똑같은 객체가 여러 번 만들어지는 것이 아니라 하나를 만들면 그것을 재사용한다. => 메모리 절약

Bean 등록 방법

  • @Component
    • 가장 쉬운 방법으로 클래스 선언부 위에 @Component을 사용하면 된다. 자동 등록이 된다. 
    • 또한, @Component를 포함하는 @Controller, @Service, @Repository도 스프링 Bean으로 자동 등록이 된다.
  • 자바 설정 클래스를 직접 만들기
    • 설정 클래스를 만들고 @Configuration 이용
    • 해당 클래스 안의 메소드에 @Bean 이용
@Configuration을 이용하면 스프링 프로젝터에서 Configuration 역할을 하는 Class를 지정할 수 있다.
  • Bean으로 등록된 친구를 의존성 주입받아 사용하려면 @Autowired 사용.
    • 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에 찾아서 넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 '의존성 주입(DI)'라고 한다.

Annotation

  • Annotation(@)는 사전적 의미로 주석을 의미한다.
  • Java에서 @는 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하게 해준다.
  • 프로그램에서 추가적인 정보를 제공해주는 메타데이터

Annotation 장점과 사용법

  • 장점
    • 코드량이 감소한다.
    • 유지보수가 쉽다.
    • 생산성이 증가한다.
  • 사용 순서
    • @를 정의한다.
    • 클래스에서 @를 배치한다.
    • 코드가 실행되는 중 추가 정보를 획득해 기능을 실시한다.

@Bean

  • 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 등록하고자 할 때 사용되는 Annotation
@Configuration
public class ApplicationConfig{
	@Bean
    public ArrayList<String> array1(){
    	return new ArrayList<String>();
    }
    @Bean(name="myarray")
    public List<String> array2(){
    	return new List<String>();
    }
}

@Component

  • 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 Annotation
  • 즉, 간단하게 Bean을 등록하기 위해 사용되는 Annotation
@Component
public class Student{
	public Student(){
    	System.out.println("hi");
    }
}

@Autowired

  • 스프링 컨테이너에 등록한 Bean에게 의존 관례 주입이 필요할 때, DI(의존성 주입)을 도와주는 어노테이션
  • 즉, @Autowired를 사용한 클래스에서 적용된 클래스를 사용할 수 있게 해준다.

@SpringBootApplication

  • @Configuration, @EnableAutoConfiguration, @ComponentScan 3가지가 합쳐진 어노테이션
  • Spring Boot 어플리케이션 실행 초기 진입점에 위치하는 어노테이션
728x90