스프링

Spring의 동작

짱코딩러 2022. 10. 17. 15:30

Lombok : getter/setter, toString(), 생성자 등을 자동으로 생성해줌.

  다른 jar파일들과 달리 이클립스 에디터 내에서도 사용되어야 하므로 별도 설치가 필요

 

빈(Bean) : 스프링에서 관리되는 객체 

  root-context.xml에서 설정할수 있다.(java로 설정할때는 RootConfig.java에서 @ComponentScan을 이용해주면 댐다.)

 

1.스프링 프레임워크가 시작되면, 스프링이 사용하는 메모리 영역(Context)을 만들고 스프링에서는 ApplicationContext(객체)가 만들어 진다.

2.root-context.xml에 설정되어 있는 <context:component-scan>태그의 내용을 통해 패키지(org.zerock.sample)를 스캔한다.

3.패키지 내의 클래스들 중에서 @Component가 있는 클래스의 인스턴스를 생성한다.

4.@Autowired설정이 있는 객체(Restaurant)에는 필요한 객체(Chef)의 레퍼런스를 주입한다.

 


스프링의 의존성 주입

1.Setter 주입

setXXX()와 같은 메서드를 작성하고(혹은 Lombok으로 생성하고) @Autowired같은 어노테이션을 통해 스프링으로 부터 자신이 필요한 객체를 주입받음

2.생성자 주입

@Component
@ToString
@Getter
public class SampleHotel {
	private Chef chef;
	
    public AmpleHotel(Chef chef) {
    	this.chef = chef;
    }
}

+생성자의 자동주입과 Lombok을 결합한 경우

@Component
@ToString
@Getter
@AllArgsConstructor	//인스턴스 변수로 선언된 모든 것을 파라미터로 받은 생성자를 작성 해줌다.!
public class SampleHotel {
	private Chef chef;
}

+여러 인스턴스 변수들 중 특정한 변수에 대해서만 생성자 작성하기

@Component
@ToString
@Getter
@RequiredArgsConstructor	//final객체일떄 사용 가넝한.
public class SampleHotel {

    @NonNull	//final이 아닌경우에도 이거 붙여주면 댐니다.
	private /*final*/ Chef chef;
	
}