본문 바로가기

Java

spring / spring bean 등록하는 방법 2가지 _ 2 자바코드로 직접 스프링 빈 등록

 

 

project 안에 Config Class 생성

 

@Configuration : annotation 기반 환경설정을 돕는 곳

 

@Bean : Spring bean 등록 annotation

@Configuration
public class SpringConfig {

    @Bean
    public MemberService MemberService() {
        return new MemberService(MemberRepository());   //autowired
    };

    @Bean
    public MemberRepository MemberRepository() {
        //MemberRepository 는 Interface이기 때문에 구현체인 MemoryMemberRepository를 return
        return new MemoryMemberRepository();

    }

}

Controller의 경우 컴포넌트 스캔 방식으로 작성해서 사용

 

(@Autowired 의 경우, bean으로 등록되지 않은 곳에선 error)

 

 

🔔 실무에서는 주로 컴포넌트 스캔을 많이 사용함.

    상황에따라 구현클래스를 변경해야 하는 경우 Spring bean으로 등록

 

 

 

 

 

 

* 의존성 주입의 3가지 방법 (Dependency Injection)

1. 생성자 주입 (요즘 가장 많이 사용하고 권장하는 방식)

 : 생성자를 통해 의존관계를 주입 

  생성자 호출시점에 1회 호출

private final MemberService memberService;

@Autowired
public MemberController(MemberService memberService) {
    this.memberService = memberService;
}

 

 

2. 필드 주입

 : 거의 쓰이지 않음 ( 특히 Intellij 에서 사용시 오류남)

@Autowired MemberService memberService;

 

 

3. setter 주입

 : setter의 경우 public으로 열어둬야하는데 누군가 접근 할 수 있고, 사실 주입받는 객체가 변경될 가능성 거의 없음

public MemberService setMemberService(MemberService memberService) {
    this.memberService = memberService;
}

 

 

 

 

출처 | 인프런 / 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(김영한)

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8#

 

 

 

반응형