본문으로 바로가기
반응형

 

 

기존 클래스들의 작성은

 

아래 링크에 순차적으로 작성되어있다.

 

 


● 회원관리 예제 - 백엔드 개발

 

   1. 회원 도메인과 리포지토리 만들기

   2. 회원 리포지토리 테스트 케이스 작성

   3. 회원 서비스 개발

   4. 회원 서비스 테스트

 

 


 

 

이전 포스팅에선 

 

@(애노테이션)을 활용한 컴포넌트 스캔 방식으로 

스프링에 빈을 등록했다.

 

https://healthdevelop.tistory.com/entry/spring16

 

[Spring boot] 스프링 빈과 의존관계 | 컴포넌트 스캔과 자동 의존관계 설정 | @Controller | @Autowired | 컨

기존 클래스들의 작성은 아래 링크에 순차적으로 작성되어있다. ● 회원관리 예제 - 백엔드 개발  1. 회원 도메인과 리포지토리 만들기  2. 회원 리포지토리 테스트 케이스 작성  3. 회원 서비스

healthdevelop.tistory.com

 

 

 

 

 

 

이번 포스팅에선

애노테이션을 활용하지 않고 자바 코드로 스프링 빈을 등록하는 법

알아보고자 한다.

 

 

 

 

 

 

 


● 컨트롤러 작성  

 

 

 

 

 

 

 

MemberController.java

package hello.hellospring.controller;
import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class MemberController {
	private final MemberService memberService;
    
 	@Autowired
 	public MemberController(MemberService memberService) {
 		this.memberService = memberService;
 }
}

 



 

 

 

 

 

 

● SpringConfig 작성  

 

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이라고 작성해준 후,

 

스프링 빈으로 등록하고자 하는 것들을(service, repository) 

@Bean 애노테이션을 통해 등록해준다.

 

 

이렇게 하게되면 컴포넌트 스캔 방식보다는

코드 작성이 길어지는 불편한 점이 있다.

 

 

 

 

 

 

 

하지만 직접 빈을 등록하는 방법의 장점이 있다.

 

 

실무에서는

주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다.

 

그리고 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면

설정을 통해 스프링 빈으로 등록한다.

 

 

 

 

 

 

예를 들어,

db를 이전에 작성했던 memoryMemberRepository를 사용하지 않고

jdbcMemberRepository를 이용해 관리하고자 한다면,

 

 

우리는 인터페이스 및 구현체를 건들지 않고

위에 작성한 SpringConfig에서 memberRepository 빈의 리턴 값을

jdbcMemberRepository로 변경만 해주면 한다.

(물론 jdbcMemberRepository는 작성이 되어있다고 가정)

 

 

 

 


 

 

 

여기까지 스프링 빈을 등록하는 두 가지 방법을 알아봤다.

 

1. 컴포넌트 스캔 방식

2. 자바 코드로 직접 스프링 빈 등록

 

 

 

 

 

이제는 작성했던 코드(백엔드)를 토대로

클라이언트에게 실제로 보여지는 화면을 구현하고자 한다.

 

 

 

 

 

 

반응형