본문 바로가기
Back-End/Spring

3.스프링빈과 의존관계

by 두두리안 2020. 12. 28.
728x90

3.스프링빈과의존관계

목차

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

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

MemberController

@Controller
public class MemberController {

    //new MemberService() -> 여러곳에서 쓰일수 있다
    //private final MemberService memberService = new MemberService();

    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}
  • 오류가 난이유는 MemberService 스프링이 등록이 안되서 오류가 난것이다
    image
@Service
public class MemberService {

@Repository
public class MemoryMemberRepository implements MemberRepository{
  • @Service @Repository 를 붙여주면서 스프링에 등록해준다
  • @Service , @Repository , @Controller 안에는 @Component 가있어서 스프링이 객체를 생성해서 등록해준다
  • @Autowired는 의존 관계를 주입시켜준다
  • @SpringBootApplication 는 해당 하위패키지를 찾아본다 다른패키지는 X
  • 스프링은 스프링 컨테이너에 스프링 빈을 등록할때 기본으로 싱글톤으로 등록한다!

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

//@Service
public class MemberService {

//@Repository
public class MemoryMemberRepository implements MemberRepository{
  • @Service , @Repository 을 지운다
#### SpringConfig

@Configuration
public class SpringConfig {

@Bean
public MemberService memberService(){
return new MemberService(memberRepository());
}

@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}

  • SpringConfig 클래스를 새로만들어서 거기다가 스프링 빈을 등록한다
  • XML설정 방식도 있지만 잘 안사용한다
  • DI에는 필드 주입, setter 주입, 생성자 주입 이렇게 3가지 방법이 있다
  • 생성자 주입을 추천한다!
  • 상황에따라 구현클래스를 변경해야될때 유용하다!

참고자료

728x90

'Back-End > Spring' 카테고리의 다른 글

6.스프링 DB접근기술  (0) 2020.12.29
5.순수 JDBC 접근기술  (0) 2020.12.28
4.회원 관리 예제 - 웹 MVC개발  (0) 2020.12.28
2.회원관리 예제  (0) 2020.12.25
1.스프링부트 웹개발 기초  (0) 2020.12.25