본문 바로가기
IT/Java

Spring Bean 이란?

by 성준하이 2022. 7. 17.
반응형

스프링에는 다양한 특징이 있지만 그중 하나는 제어의 역전 IoC 이다.

제어의 역전에 관한 내용은 아래 참고 포스팅을 참조하면 이해하기 쉬울 것이다.

 

스프링 컨테이너에서 직접 객체를 관리 하게 되는데 이것을 빈(Bean)이라고 한다.

빈 등록은 다양한 방법이 있는데

 @Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다.

또한, @Component를 포함하는 @Controller, @Service, @Repository 애노테이션도 스프링 빈으로 자동 등록된다.

 

스프링에서는 다음과 같은 순서로 동작을 한다.

컨트롤러에서 @Controller 어노테이션을 사용하게 되면 자동으로 스프링 빈에 등록이 되고,

controller 클래스에서는 서비스 호출을 위해 @Autowired 라는 어노테이션으로 의존성 주입을 해주게 된다.

 

이상태로 만약 코드를 돌리면 에러가 난다.

 

이유는 의존성 주입을 받을 서비스가 빈에 등록이 되어있지 않기 때문이다.

 

그래서 서비스 클래스 역시 @Service 어노테이션으로 등록을 해줘야하고,

서비스에서도 마찬가지로 repository를 호출하기 위해서는 @Repository 어노테이션을 추가해줘야 한다.

 

참고로 스프링에서 스프링 컨테이너에 빈을 등록할때는 기본적으로 싱글톤으로 등록을 한다.

다른곳에서 사용이 되도 객체는 하나뿐이다.

물론 여러개를 사용할수 있지만 default값은 싱글톤이라고 하면 된다.

싱글톤에 대해서는 아래 참고 포스팅을 참조해보도록 한다.

 

어노테이션 방법이 아니라면 configuration에서 빈에 직접 등록할수 있고 방법은 다음과 같다.

configuration class를 생성 후에 bean annotation을 사용하여 해당 클래스를 선언해주면 된다.

 

@Configuration
public void conf(){
     
     @Bean
     puclic MemberService service(){
          return new MemberService(memberRepository());
     }
     @Bean
     puclic MemberRepository memberRepository(){
          return new MemorymemberRepository();
     }
}

 

이상 스프링에서 빈에 대해서 알아보았다.


참고 포스팅

https://thenicesj.tistory.com/144

 

Spring 에서 IOC, AOP, DI 에 대하여

이번 포스팅에서는 SPRING의 핵심요소인 IOC, AOP, DI에 대해서 다뤄볼 것이다. 다른 특징들도 많지만 이 세가지는 스프링의 장점으로 많이 알려져있다. 하나씩 다뤄보도록 해보자. IOC(Inversion of Contro

thenicesj.tistory.com

https://thenicesj.tistory.com/146

 

객체지향 디자인 패턴 심화 정리 part.1

포스팅을 읽기 전에 아래 참고 포스팅에서 간단한 디자인패턴에 대한 정의와 종류에 대해서 읽고 오면 도움이 될것이다. 그리고 이번 포스팅에서는 좀더 심화된 내용을 다뤄볼 것이다. 저번 포

thenicesj.tistory.com

 

반응형

'IT > Java' 카테고리의 다른 글

LocalDateTime 날짜 비교  (36) 2022.07.21
Spring에서 Service와 ServiceImpl 를 나누는 이유(2022.07.19)  (23) 2022.07.18
이클립스 자바 버전 변경  (35) 2022.07.16
jdbc URL  (29) 2022.07.15
JAVA 에서 Date 형식(Date, LocalDateTime)  (59) 2022.07.06

댓글