우리는 지금까지 MemberRepository와 MemberService를 만들었다.
이를 통해 멤버 객체를 만들었고 가입을 했으며
리포지토리에서 멤버 정보를 저장하고 꺼내는것 까지 로직을 짜고 테스트를 했다.
이번 시간에는 HTML 을 통해 화면을 띄우기 위해 Controller / View를 만들어보자.
📚 Member Controller 생성
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
회원 컨트롤러가 회원서비스와 회원리포지토리를 사용할 수 있게 하려면 어떻게 해야할까 ?
생성자에 @ Autowired 가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다!
이것이 바로 의존성 주입이라고 한다! 이 상태에서 실행을 시키면 아래와 같은 오류가 발생한다.
Consider defining a bean of type 'hello.hellospring.service.MemberService' in
your configuration.
왜냐하면 memberService가 스프링 빈으로 등록되지 않았기 때문이다 ! 다시 memberService을 가서 @service어노테이션을 붙여주고
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
...생략...
}
MemoryMemberRepository에서도 @Repository 어노테이션을 붙여준다.
@Repository
public class MemoryMemberRepository implements MemberRepository{
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
...생략...
}
Spring Bean을 등록하는 방법은 두 가지 방법이다.
오늘은 컴포넌트 스캔과 자동 의존관계 설정에 대해서만알아보자
1. 컴포넌트 스캔과 자동 의존관계 설정
2. 자바코드로 직접 스프링 빈 등록
1. 컴포넌트 스캔과 자동 의존관계 설정
위에처럼 @Controller, @Service, @Repository, @Autowired 을 사용해서 진행한 것이 " 컴포넌트 스캔 " 방식이다.
@Component 어노테이션이 있어 해당 객체를 spring container에 등록하고 @ Autowired 을 이용해서 객체를 연결해줘
MemberController, MemberService, MemoryMemberRepository가 서로 연결될 수 있는 것이다.
[ 컴포넌트 스캔 원리 ]
- @Component 어노테이션이 있으면 스프링 빈으로 자동 등록되는데 이유는 컴포넌트 스캔 때문이다.
- 컴포넌트 스캔 시 싱글톤으로 등록하고 하나의 객체만 공유한다.
'ON > 실습' 카테고리의 다른 글
[Spring Boot] 회원 관리 예제 - 웹 MVC 개발 ① (0) | 2023.11.24 |
---|---|
[Spring Boot] 스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록하기 ② (0) | 2023.11.23 |
[Spring Boot] 회원관리 예제 - 회원 서비스 테스트 ⑤ (0) | 2023.11.17 |
[Spring Boot] 회원관리 예제 - 회원 서비스 개발 ④ (0) | 2023.11.13 |
[Spring Boot] 회원관리 예제 - 회원 리포지토리 테스트 케이스 작성③ (0) | 2023.11.09 |
우리는 지금까지 MemberRepository와 MemberService를 만들었다.
이를 통해 멤버 객체를 만들었고 가입을 했으며
리포지토리에서 멤버 정보를 저장하고 꺼내는것 까지 로직을 짜고 테스트를 했다.
이번 시간에는 HTML 을 통해 화면을 띄우기 위해 Controller / View를 만들어보자.
📚 Member Controller 생성
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
회원 컨트롤러가 회원서비스와 회원리포지토리를 사용할 수 있게 하려면 어떻게 해야할까 ?
생성자에 @ Autowired 가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다!
이것이 바로 의존성 주입이라고 한다! 이 상태에서 실행을 시키면 아래와 같은 오류가 발생한다.
Consider defining a bean of type 'hello.hellospring.service.MemberService' in
your configuration.
왜냐하면 memberService가 스프링 빈으로 등록되지 않았기 때문이다 ! 다시 memberService을 가서 @service어노테이션을 붙여주고
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
...생략...
}
MemoryMemberRepository에서도 @Repository 어노테이션을 붙여준다.
@Repository
public class MemoryMemberRepository implements MemberRepository{
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
...생략...
}
Spring Bean을 등록하는 방법은 두 가지 방법이다.
오늘은 컴포넌트 스캔과 자동 의존관계 설정에 대해서만알아보자
1. 컴포넌트 스캔과 자동 의존관계 설정
2. 자바코드로 직접 스프링 빈 등록
1. 컴포넌트 스캔과 자동 의존관계 설정
위에처럼 @Controller, @Service, @Repository, @Autowired 을 사용해서 진행한 것이 " 컴포넌트 스캔 " 방식이다.
@Component 어노테이션이 있어 해당 객체를 spring container에 등록하고 @ Autowired 을 이용해서 객체를 연결해줘
MemberController, MemberService, MemoryMemberRepository가 서로 연결될 수 있는 것이다.
[ 컴포넌트 스캔 원리 ]
- @Component 어노테이션이 있으면 스프링 빈으로 자동 등록되는데 이유는 컴포넌트 스캔 때문이다.
- 컴포넌트 스캔 시 싱글톤으로 등록하고 하나의 객체만 공유한다.
'ON > 실습' 카테고리의 다른 글
[Spring Boot] 회원 관리 예제 - 웹 MVC 개발 ① (0) | 2023.11.24 |
---|---|
[Spring Boot] 스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록하기 ② (0) | 2023.11.23 |
[Spring Boot] 회원관리 예제 - 회원 서비스 테스트 ⑤ (0) | 2023.11.17 |
[Spring Boot] 회원관리 예제 - 회원 서비스 개발 ④ (0) | 2023.11.13 |
[Spring Boot] 회원관리 예제 - 회원 리포지토리 테스트 케이스 작성③ (0) | 2023.11.09 |