[SPRING] Spring Container, Bean

chanyoun·2023년 2월 5일
0

Spring을 사용하는 이유

  • JAVA를 통해 코드를 짤때 객체를 구현하는 클래스를 EX)AppConfig 따로 분리해서 코드를 짜야한다.
    이렇게 하지않으면 DIP(의존관계 역전 원칙)원칙 즉 하나의 클래스가 추상클래스와 구체클래스에 동시에 의존할수 있기때문이다.

  • 또한 AppConfig처럼 객체를 구현하는 클래스를 따로 분리하는순간 OCP원칙(소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.)에 의하여 우리가 소프트웨어 요소를 새롭게 확장해도 사용영역의 변경은 닫혀있으면서 AppConfig (구성영역)의 코드만 수정하면 되기때문에 OCP원칙도 지킬수 있게된다.

  • 마지막으로 AppConfig를 통해 객체를 생성하고 연결하는 역활을 담당하게하고, 클라이언트 객체는 실행에 대한 책임만을 지게 함으로서 SRP(단일 책임 원칙)을 지킬수있다.

  • 위 이유들 때문에 AppConfig처럼 구현객체를 생성하며 연결하는 클래스를 따로 구현한다. AppConfig처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC컨테이너 또는 DI컨테이너라 한다.

  • 기존에는 AppConfig를 사용해 직접 객체를 생성 및 의존관계를 주입했지만, 스프링 컨테이너를 사용해 위과정을 할수있다.

Container 생성, Bean등록

  • Spring Container에서는 @Configuration이 붙은 AppConfig를 설정(구성)정보로 사용한다. 이때 @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다.

    @Configuration
    public class AppConfig {
    
    @Bean
    	public MemberService memberService() {
    		return new MemberServiceImpl(memberRepository());
    	}
    • @Configuration에 의해 AppConfig을 구성정보로 사용한다는 의미이며, @Bean이라 적힌 memberService()에 의해 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 하며, 스프링 빈의 이름은 메서드의 명 (memberService)를 사용한다.
    • 스프링을 사용함으로서 필요한 객체를 AppConfig에서 조회하는게 아닌 스프링 컨테이너에 등록된 스프링빈(객체)을 조회한다.
      이때 스프링빈은 applicationContext.getBean()메서드를 통해 찾을수 있다.
      ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
       MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
    • ApplicationContext을 통해 AppConfig안에 있는 환경설정 정보를 가지고 스프링 컨테이너를 만들어준다.
    • applicationContext.getBean("memberService", MemberService.class);을 통해 bean을 가져온다.
    • getBean("메서드이름",타입) 형식을 맞춰 입력해주면 된다.

Spring Container

  • Spring Container을 만드는 2가지 방법이존재한다.
    • XML을 기반으로 만들수있으며
    • 애노테이션 기반의 자바 설정 클래스로 만들수있다.(우리가 위에서 했던 방식)
    • 위 사진처럼 Spring Container에 Spring Bean이 어떻게 저장되는지 알수있다.
    • Bean의 이름은 메서드이 이름, 빈 객체는 메서드의 return 객체가 되는것을 알수있다.
profile
기록은 힘들어

0개의 댓글