SPRING Bean

Ga0·2023년 4월 10일
0

SPRING

목록 보기
3/14

Spring Bean(스프링 빈)

  • Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다.

  • IoC(제어의 역전, Inversion Of Contoller)에 대한 설명은 전 포스트에서 하였기 때문에 넘어간다.

  • 아무튼 우리가 Spring을 쓰기 전에는 Class를 작성하고 new 연산자를 통해 생성자를 생성하여 조작한 후에 사용했다.

  • 하지만, Spring을 사용한 후 부터는 직접 new 연산자를 사용하여 만드는 객체가 아니라 Spring에 의해 관리를 당하는 자바 객체를 사용한다.

 // Spring 사용X
 MemberService service = new MemberService();
 private Memberservice(){}
   public MemberService getMember(){
      return service;
   }
   
 //Spring 사용O
 @Autowired //어노테이션을 통해 자동 주입
 MemberService memberService;

그렇다면, Spring Bean을 Spring IoC Container에 등록하는 방법은?

JAVA Annotation 사용

  • 자바에는 Annotation(=@) 이라는 기능이 있다.

  • Annotation은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터(Spring 컨테이너가 객체를 어떻게 생성할 것인지 표현하기 위한)의 일종

  • 메타데이터(MetaData) : 일반적으로 데이터에 관한 구조화된 데이터

  • Spring 전에 흔히 보던 @Override 또한 Annotation이다.

  • Spring은 여러 가지의 Annotation을 사용하지만, 그 중 Bean을 등록하기 위해서 쓰는 Annotation은 @Component 이다.

package org.example.practice.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller //(1)
public class MemberController {
    @GetMapping("info")
    public String info(){
        return "info";
    }
}
  • 코드에 (1) @Controller가 보일 것이다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {

	/**
	 * The value may indicate a suggestion for a logical component name,
	 * to be turned into a Spring bean in case of an autodetected component.
	 * @return the suggested component name, if any (or empty String otherwise)
	 */
	@AliasFor(annotation = Component.class)
	String value() default "";

}
  • @Controller을 타고 가면 @Component Annotation을 쓴 것을 확인 할 수 있다.
  • 위에섣 말했듯이, @Component를 쓰면 Spring은 해당 Controller를 Bean에 등록한다.

Bean Configuration File에 직접 Bean 등록하는 방법

  • @Configuraton@Bean 을 이용하면 Bean을 등록할 수 있다.
  • @Configuraton을 이용하면 Spring Project에서의 Configuration 역할 을 하는 Class를 지정할 수 있고, 해당 File 하위에 Bean으로 등록하고자 하는 Calss나 메서드에 @Bean을 사용하면 간단하게 Bean에 등록할 수 있다.

언급한 Annotation

@configuration

  • @configuration을 클래스에 적용하고 @Bean을 해당 Class의 method에 적용하면 @Autowired로 Bean을 부를 수 있다.

@component @bean

  • @Component는 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 어노테이션이다.
        @Component(value="example")
        public class Example{
            public Example() {
                System.out.println("ex");
            }
        }
  • @Bean는 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들려고 할 때 사용되는 어노테이션
    • ex. ArrayList와 같은 라이브러리를 Bean으로 등록하기 위해서는 별도로 해당 라이브러리 객체를 반환하는 Method를 만들고 @Bean 어노테이션을 사용하면된다.
        @Bean
        public ArrayList<String> array(){
            return new ArrayList<String>();
        }

@Controller

  1. 전통적인 SPRING MVC 컨트롤러
  2. Model 객체를 만들어 데이터를 담고 View에 반환한다.
  3. 프레젠테이션 레이어, 웹 요청과 응답을 처리한다.

참고 자료

https://melonicedlatte.com/2021/07/11/232800.html

0개의 댓글