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 스프링이 등록이 안되서 오류가 난것이다
@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 |