웹(Web)/백엔드(Backend)

스프링 어노테이션을 이용한 객체생성/초기값(@Value)

SK_MOUSE 2021. 4. 19. 00:31
반응형

소스코드로 옮기는작업을 하는것이다.

Component-scan이 꼭 필요함을 알려줌.

<context:component-scan base-package="spring.di.ui"/>을 보자

"spring.di.ui"라는 패키지 안에 들어가서 클래스들이 있을텐데, 거기 들어가서 클래스 읽어줄래?

스캔해봐서 component가 있는지 찾아봐. 거기 컴포넌트가 있으면 객체화 시켜줘.

 

@Component를 읽으면 안쪽에 있는 걸(Autowired부분) 읽어버림.

 

따라서 XML부분에서는 객체 생성하는부분을 다 지워버린다.

 

이름을 설정해주어야한다.

만약 Component로 이름을 설정하지 않고 생성자를 호출하려면

아래에 있는 방법으로만 가능

주석처리한 부분처럼 ExamConsole.class라는 객체를 골라야만 생성이된다.

 

 


객체생성후 초기값을 어떻게 넣어주나?

 

@Value를 이용하여 초기값설정

@Value(값)을 사용하면 객체생성시 초기값을 넣어줄수있다.

 

그런데, 저렇게 초기값설정하고 객체생성하는것이 비효율적으로 보이는데 왜 Component를 사용하나?

설명을 보면 이해가 된다.

웹 어플리케이션을 만들때, Componet에서 더 세부적으로 보면 특화된 기능을 사용할 수 있다.

객체화하고자 하는 클래스가 어떤 것인지 명시화 할 수 있다.

 

Spring MVC에서 각각의 구성마다 다른 컴포넌트(컨트롤러,서비스,레포지터리)를 넣어준다.

다양하게 명시적으로 넣어줌

Entity, Model등은 일반적으로 @Componet를 붙여서 생성하지 않는다.

이름을 명시적으로 사용한다!!

 

남이만든 클래스를 소스코드를 갖고있지 않으므로 Controller를 어노테이션 붙여서 생성불가.

그렇다면? Spring을 XML로 만들어야되냐? ㄴㄴ 모든것들을 다 XML에서 제외해버리고 다 어노테이션(Annotation)으로 만들어버림.

 

그럼 Config 자체가 JAVA로 만들어버리고, XML을 지워버릴 수 있다. 다음글..참고..

 

반응형