Sad Puppy 3 Spring Core 1 :: 개발자 아지트

[Spring Bean]

: 스프링은 애플리케이션의 복잡성을 줄이고, 유지보수를 용이하게 하기 위해서 객체의 생성, 설정 및 생명주기를 관리하는 스프링 컨테이너를 제공한다. 해당 컨테이너가 관리하는 객체를 스프링 빈이라고하고, 이를 통해서 의존성 주입이나 객체 관리가 자동화된다. 

 

[Bean Registration]

: 스프링에서 빈을 등록하는 방법은 다양한다. (= 빈을 만드는 방법)

 

어노테이션을 사용해 클래스에 추가하는 방법이 있다. 

 

@Component

: 스프링아, 이 클래스를 빈으로 만들어서 관리해줘! 

 

@Component
public class SpringBean {
    public String hello() {
        return "Hello";
    }
}

 

이제 스프링이 SpringBean 클래스를 관리하게 된다. 

 

 

[Bean Autowiring]

: 스프링 컨테이너에 등록된 객체는 매번 새로 생성할 필요 없이 컨테이너에서 가져와서 사용할 수 있다. (빈 자동 연결)

@Autowired
private SpringBean springBean;

 


[Dependency Injection]

:스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 관리하는 방법은 다양하다. 그 중 어노테이션을 이용한 방법으로 생성자, 세터, 필드에 해당 @Autowired 어노테이션을 추가하는 방법이 있다. 

 

*참고로

: InjectionBean은 혼자 움직일 수 없고, ConstructorInjection이라는 것 안에서 움직일 수 있다. 

 

[Constructor Injection]

:스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 생성자를 통해 주입하는 방법이다. 

 

private InjectionBean injectionBean;

public ConstructorInjection(InjectionBean injectionBean) {
    this.injectionBean = injectionBean;
}

 

여기서 'ConstructorInjection을 만들 때, InjectionBean이라는 객체를 미리 넣어줌으로써 의존성을 주입한다. 

 

[Setter Injection]

:스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 세터를 통해 주입하는 방법이다. 

 

private InjectionBean injectionBean;

    @Autowired
    public void setInjectionBean(InjectionBean injectionBean){
        this.injectionBean = injectionBean;
    }

 

[Field Injection]

: 스프링 컨테이너에 등록된 스프링 빈 간의 의존성을 필드를 통해 주입하는 방법이다. 

 

@Autowired
private InjectionBean injectionBean;

 


[Component Scan]

: 스프링에서 특정 패키지를 스캔해, 그 패키지 안에 있는 @Component, @Service, @Repository, @Controller 등의 어노테이션이 붙은 클래스를 == 컨테이너에 등록된 스프링 빈을 자동으로 찾아 등록하는 역할을 한다.

 

[@ComponentScan]

: @ComponentScan 어노테이션을 이용해 스캔할 패키지를 지정할 수 있다. 앞에서 해당 어노테이션을 사용하지 않고도 정상동작했던 이유는 @SpringBootApplication이 @ComponentScan을 포함하고 있기 때문이다. 


@ComponentScan 이 덕분에 @Component로 표시된 클래스들이 자동으로 스프링 빈으로 등록되었던 것이다. 

@ComponentScan 이 어노테이션이스프링 빈을 관리하고, 자동으로 설정해주기 때문에 @Autowired가 정상적으로 작동할 수있다. 

 

 

@Configuration
@ComponentScan(basePackages = "cholog.scan")
public class ContextConfiguration {
}

 ComponenetScanBean을 Bean으로 등록하기

 

상위 패키지를 스캔하도록 함으로써 

상위패키지 아래에 등록된 빈을 사용하도록 만듦

+ Recent posts