스프링 빈(Spring Bean)이란?

2023. 8. 4. 16:11·Back/Spring(Springboot)

기존의 Java Programming 에서는 Class를 생성하고 new를 입력하여 원하는 객체를 직접 생성한 후에 사용했다. 하지만 Spring에서는 직접 new를 이용하여 생성한 객체가 아니라, Spring에 의해 관리되는 자바 객체를 사용한다. 이렇게 Spring에 의하여 생성되고 관리되는 자바 객체를 빈(Bean)이라고 한다. Spring Framework에서는 Spring Bean을 얻기 위해 ApplicationContext.getBean() 와 같은 메소드를 사용하여 Spring 에서 직접 자바 객체를 얻어서 사용한다.

 

빈(Bean)

재사용 가능한 소프트웨어 컴포넌트이며, 스프링 컨테이너는 하나 이상의 빈(Bean)을 관리한다. 빈(Bean)은 인스턴스화된 객체를 의미하며,

@Bean 어노테이션을 통해 메서드로부터 반환된 객체를 스프링 컨테이너에 등록한다. 빈(Bean)은 클래스의 등록정보, Getter/Setter 메서드를 포함하며, 컨테이너에 사용되는 설정 메타데이터로 생성된다.

 

* 설정메타데이터란?

XML, 자바 어노테이션, 자바 코드로 표현하며, 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체 등을 정의한다.


 

스프링 빈을 스프링 컨테이너에 등록하는 방법

1. 자바 어노테이션(Annotation)을 사용하는 방법

Spring에서는 여러가지 Annotation을 사용하지만, 빈(Bean)을 등록하기 위해서는 @Component 어노테이션을 사용한다. @Component 어노테이션이 등록되어 있는 경우 Spring이 Annotation을 확인하고 자체적으로 Bean으로 등록한다.

 

@Controller
public class HelloController {
    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "This is data!!");
        return "hello";
    }
}

다음은 스프링 프로젝트에서 컨트롤러(Controller)를 등록할 때 @Controller 어노테이션을 사용하는 예시이다. @Controller 어노테이션을 사용하면 스프링 컨테이너에 빈(Bean)으로 자동 등록된다

 

@Component를 포함하는 다음 어노테이션도 스브링 빈(Bean)으로 자동 등록된다

• @Controller

• @Service

• @Repository

 

2. 자바 코드로 직접 스프링 빈(Bean)을 등록하는 방법

package hello.hellospring;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringConfig {
     @Bean
     public MemberService memberService() {
     	return new MemberService(memberRepository());
     }
     @Bean
     public MemberRepository memberRepository() {
   		 return new MemoryMemberRepository();
     }
}

@Configuration과 @Bean 어노테이션 을 이용하여 Bean을 등록할 수 있다.

저작자표시 (새창열림)

'Back > Spring(Springboot)' 카테고리의 다른 글

[스프링부트 입문] 시리즈 #02 정적페이지 만들고 화면 띄우기  (0) 2023.08.31
[스프링부트 입문] 시리즈 #01 프로젝트 생성하기  (0) 2023.08.30
[Spring] 빌드 관리 도구 : Maven과 Gradle의 차이  (0) 2023.08.23
[SpringBoot] 이클립스에서 Test Case 만들기  (0) 2023.07.27
MVC패턴  (0) 2022.01.13
'Back/Spring(Springboot)' 카테고리의 다른 글
  • [스프링부트 입문] 시리즈 #01 프로젝트 생성하기
  • [Spring] 빌드 관리 도구 : Maven과 Gradle의 차이
  • [SpringBoot] 이클립스에서 Test Case 만들기
  • MVC패턴
soyeon26
soyeon26
  • soyeon26
    개발 일지
    soyeon26
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • Web (22)
        • Web (1)
        • HTTP (0)
      • Language (29)
        • Java Script (3)
        • Type Srcipt (1)
        • Java (25)
      • Front (19)
        • HTML+CSS (4)
        • React (15)
      • Back (41)
        • Spring(Springboot) (9)
        • JSP (21)
        • Database (5)
        • NestJS (6)
      • Devops (6)
        • Docker (1)
        • Git & SVN (5)
      • App (7)
        • Android (7)
      • IT 정보 (3)
  • 블로그 메뉴

    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    과학기술인등록번호 조회
    과학기술인 등록번호 발급
    SSR
    강의 후기
    java의 정석
    csrvsssr
    백엔드
    스프링부트
    SQL강의 추천
    Spring
    springboot
    서블릿
    과학기술인 번호 발급
    인프런
    React Next.js
    React
    데이터베이스 강의
    csr과ssr의 차이
    강의후기
    Next.js 필요성
    프론트엔드
    중복제거
    Next.js
    Java
    자바스크립트set
    javascript
    김영한
    sql강의
    과학기술인 등록
    과학기술인번호 조회
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
soyeon26
스프링 빈(Spring Bean)이란?
상단으로

티스토리툴바