스프링 프레임워크(8) 어노테이션 2

넙데데맨·2022년 4월 26일
0

스프링을 사용해 자바에서 객체 생성

수정 전

InlineExamConsole.java
public class InlineExamConsole implements ExamConsole {
	
    @Autowired
	@Qualifier("exam")
	@Override
	public void setExam(Exam exam) {
		System.out.println("setter");
		this.exam = exam;
	}
}
setting.xml
	<context:annotation-config/>

수정 후

InlineExamConsole.java
@Component // 객체 생성을 위해 어노테이션 추가
public class InlineExamConsole implements ExamConsole {
	
    @Autowired
	@Qualifier("exam")
	@Override
	public void setExam(Exam exam) {
		System.out.println("setter");
		this.exam = exam;
	}
}
setting.xml
	<context:component-scan base-package="spring.di.ui"></context:component-scan>
// component-scan이 객체를 생성하면서 Autowired는 자동으로 읽기 때문에 <context:annotation-config/>는 필요가 없다.
Program.java 1
ExamConsole console = (ExamConsole)context.getBean(ExamConsole.class)
Program.java 2
ExamConsole console= (ExamConsole)context.getBean("console"); 

1번 파일은 @Component만 사용해도 객체를 생성한다.
하지만 2번 파일은 ID를 통해 불러오기 때문에 "console"을 찾지 못해 생성을 하지 못한다.
따라서 @Component에 값을 주어 해결한다.

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

@Component

Spring에서 생성되지 않고 관여가 아예 안 되어있음.
이 클래스를 읽게 해 줄 명령 필요
xml : context:component-scan base-package="사용할 패키지(복수 가능)"
해당 패키지에 있는 @Component가 달린 클래스의 객체를 생성

그러나 이런 자바 프로그램의 클래스를 객체화하는 데 쓰는 건 개념상으로 맞지 않다

@Value

기본 값을 설정하기 위한 어노테이션

  • 객체 필드에 어노테이션을 사용해 초기값을 설정해줄 수 있다.

세부 내용

Component를 사용해도 상관없지만 각각의 역할의 쓰인다고 구분을 하기위해 세분화하게 되었다.

profile
차근차근

0개의 댓글