ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [포스코x코딩온] Spring Boot (Bean, Annotation)
    [포스코x코딩온] 웹개발자 풀스택 부트캠프8기 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
Designed by Tistory.