JAVA

Spring 03 : 스프링 빈과 의존관계

nidoos 2021. 5. 18. 09:39

스프링 빈 등록방법

  1. 컴포넌트 스캔과 자동 의존관계 설정
  2. 자바 코드로 직접 스프링 빈 등록하기

컴포넌트 스캔과 자동 의존관계 설정

  • 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계 준비
@Controller
public class MemberController {
    private final MemberService memberService;    

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}
  • 생성자 주입을 쓰는 것이 제일 좋다.
  • @Autowired : 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다.
  • @Component : 이 애노테이션이 있으면 스프링 빈으로 자동 등록된다.
  • @Component / @Controller, @Service, @Repository
@Autowired
private MemberService memberService;
  • 필드주입 : 스프링이 뜰 때만 넣어주고 바꿀 수 있는 방법이 없다. 잘 안쓴다.

 

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

  • @Service, @Repository, @Autowired 애노테이션 제거 후 진행

SpringConfig.java 파일 생성

@Configuration
public class SpringConfig {

    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository());
    }
    @Bean
    public MemberRepository memberRepository(){
        return new MemoryMemberRepository();
    }
  }
  • 장점 : 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 할 경우 직접 스프링 빈을 등록하는 것이 더 편하다.
  • 아직 데이터 저장소가 정해지지 않았다는 가상의 시나리오를 정했기 때문에 직접 스프링 빈을 등록하는 것으로 한다.

보충

  • thymeleaf : JSP와 달리 Servlet으로 변환X, 비즈니스 로직과 분리되어 View에 집중.
  • 스프링부트에서는 JSP 자동 설정 지원X. JSP는 jar패키징 불가하여 war패키징해야한다.
  • get : 주로 조회할 때 / post : 폼에 등록할 때

jar

  • 자바 프로젝트를 압축한 파일

war

  • 웹 관련 자원만 포함, 웹 어플리케이션 압축 파일 포맷
  • JAR 포맷과 달리 WEB-INF 및 META-INF 디렉토리로 사전 정의 된 구조를 사용
  • WAR파일을 실행하려면 Tomcat, Weblogic, Websphere 등의 웹 서버 (WEB)또는 웹 컨테이너(WAS)가 필요

인프런 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 통해 학습 중.