최대 1 분 소요

어노테이션을 이용한 객체생성

  • 객체 생성과 Component
<context:component-scan base-package="spring.di.ui"></context:component-scan>

패키지에서 component을 찾아서 객체좀 만들어주겟니라는 의미의 지시를 가진다

 

1.이름으로 Component 해주기

ExamConsole console = (ExamConsole) context.getBean("console");// 이름으로

이름으로 Component을 할 경우

@Component("console")
public class InlineExamConsole implements ExamConsole {

componet다음 이름을 지정 해야한다!!!

 

2.형식으로 Component해주기

ExamConsole console = context.getBean(ExamConsole.class); // 형식으로
@Component
public class InlineExamConsole implements ExamConsole {

exam에 객체를 생성해보면 어떻게 될까? 두개의 패키지를 사용 해야 할 경우


package spring.di.entity;

import org.springframework.stereotype.Component;

@Component //exam 객체 만들기 
public class NewlecExam implements Exam {

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

xml의 Componet 태그를 보면 spring.di.ui까지 찾기 떄문에 spring.di.entity는 찾지 못한다 에러 발생 그러면 어떻게 찾게 해야할까? 퀄러파이 사용될경우 이름 지정 해야한다

 

스캔 범주를 바꾼다

<context:component-scan base-package="spring.di.ui, spring.di.entity"></context:component-scan>
total is 0, avg is 0.000000

 

일단 무조건 바인딩되게 설정을 변경한다(true)


@Autowired(required = true) // 무조건 바인딩이 되야한다
//	@Qualifier("exam2")
	private Exam exam;

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

true로 되어있으므로 무조건 바인딩이 되야하는데 객체가 없으므로 에러가 발생한다

 

다시 스캔범주를 바꾸면

<context:component-scan base-package="spring.di.ui, spring.di.entity"></context:component-scan>
total is 0, avg is 0.000000

출력이 된다 여기서는 널값이아닌 exam의 값이 0이라서 위가 출력된다

카테고리:

업데이트:

댓글남기기