본문 바로가기

스프링 프레임워크

뉴렉처[스프링 프레임워크] 16강~17강

 

16강 - 특화된 @Component 어노테이션 (@Controller / @Service / @Repository)

이제 @Component로 객체 생성시 필드값 초기화 작업을 어떻게 할까?

==> @Value 라는 어노테이션을 활용!!

 

초기화 할 필드명 위에 @Value("초기화값")을 써주면 된다.

ex.

@Value("20")

private int kor; 

@Value("30")

private int eng;

private int math;

private int com;

 

NewlecExam 클래스를 @Component 로 객체화 하는 것은 개념상 잘 맞지 않다.

==> @Component 는 MVC 방식으로 웹 개발을 할때 MVC를 구성하고 있는 자바형 코드를 명시할때 사용된다.

 

@Component 보다는 역할로써 의미가 부여되는 어노테이션을 사용하는게 좋다.

@Controller / @Service / @Repository 로 세부적으로 객체화하고자 하는 클래스가 어떤 역할을 하는지 명시화

해줌으로써 3개의 어노테이션으로 나누어 쓰는게 좋다.

Spring MVC의 구성

 

Controller : 사용자의 입, 출력을 담당 ==> @Controller 컴포넌트

Service : 사용자의 요구사항에 맞는 서비스를 제공 ==> @Service 컴포넌트

Repository : Service에서 필요한 데이터를 보관 ==> @Repository 컴포넌트

 

17강 - XML Configuration 을 Java Configuration 으로 변경하기

지시서 작성방식의 변경(XML파일 ~> JAVA 파일)

 

NewlecAppConfig.java 파일은 설정을 위한 자바파일임을 표시해주기 위해서,

@Configuration 을 클래스 NewlecAppConfig 위에 써준다.

==> XML에서 설정했던 내용들을 어노테이션으로 쑬 수 있다.

<context:component-scan base-package="spring.di.ui" /> 을 어노테이션으로 변경

==> @ComponentScan("spring.di.ui")

두개이상의 패키지를 scan을 어노테이션에서는 어떻게 표현할까?

배열 형태로  @ComponentScan({"spring.di.ui", "spring.di.entity"}) 으로 표현 한다.

<bean id="exam" class="spring.di.entity.NewlecExam" />을 어노테이션으로 변경

 

@Bean

public Exam exam(){

   return new NewlecExam();

}

 

public Exam exam(){ .... } 으로 만들었다고 해서 기능함수네? 라고 생각하지 말고

IoC 컨테이너에서 exam 이라는 id를 이용해서 NewlecExam()객체를 만들어서 가지고 있다. 라고 생각하기!!

 

지시서 방식을 XML파일에서 java(class)파일로 변경했으니까 Program.java 파일에서도 context 객체 생성하는 곳을

수정 해주어야한다.

 

[XML 파일 지시서 일때]

ApplicationContext context = new ClassPathXmlApplicationContext("spring/di.setting.xml");

 

[Class 파일 지시서 일때]

ApplicationContext context = new AnnotationConfigApplicationContext("NewlecDIConfig.class");

 

*Config 설정을 여러개도 할 수 있다.

 

 

 

 

 

 

 

 

 

 

출처: 뉴렉쳐

www.youtube.com/watch?v=XtXHIDnzS9c&list=PLq8wAnVUcTFWxnsrMu5kS_jt_o8gpEiTR&index=1