코딩 개발/Spring

applicationContext.xml - @Component Annotation 사용하기

호소세 2023. 7. 7. 20:41
728x90
반응형

https://pabeba.tistory.com/188

 

xml 파일을 이용한 제어의 역전(IOC)(applicationContext.xml, Maven)

.xml 파일을 이용하여 spring framework의 기본인 IOC를 알아보도록 하겠습니다. https://pabeba.tistory.com/187 Spring FrameWork 에 대하여 (+ IOC / DI, 간단한 용어 정리) FrameWork란? 사전적 의미로는 틀 + 일 => 간단

pabeba.tistory.com

이 글을 읽기 전 이전 글을 참고하시면 더 좋습니다.

 

Annotation을 이용하여 제어의 역전을 알아보겠습니다.

 

기존에 applicationContext.xml 에 <Bean> tag를 추가해서 객체를 불러왔습니다.

하지만 이번에는 @Component를 이용해서 객체를 불러오겠습니다.

 

@Component 사용 예시

<Hammer.java>

public class Hammer implements Tool{
	public void work() {
		System.out.println("망치 도구로 일하다");
	}
}

<Poclain.java>

@Component("tool") // bean name을 직접 명시 
public class Poclain implements Tool{
	public void work() {
		System.out.println("포크레인으로 일하다");
	}
}

<Tool.java>

public interface Tool {
	public void work();
}

<applicationContext.xml>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="model"></context:component-scan>
</beans>

이렇게 applicationContenxt.xml 에

<context:component-scan base-package="model"></context:component-scan>

이 문장을 넣으면 "model" 패키지와 하위 패키지에 속한 클래스들을 컴포넌트 스캔하여 Bean으로 등록하도록 스프링에 지시하는 것입니다. 이렇게 등록된 빈은 스프링 컨테이너에서 관리되며, DI(Dependency Injection) 등의 기능을 활용할 수 있습니다.

 

그리고 위에 포크레인 클래스에 @Component 어노테이션을 넣고 tool이라는 id 값을 넣어서 component라고 명시해 줍니다.

 

그러면 Spring에서는 자동으로 읽어오고 불러올 수 있습니다.

 

Test를 해볼게요

public class TestWorker {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
		Tool tool=(Tool)ctx.getBean("tool");
		tool.work();
		ctx.close();
	}
}

포크레인으로 일하다

라는 결과가 잘 나옵니다.

 

소감

다음 시간에는 AppConfig.java 파일을 이용하여 @Configuration, @ComponentScan 어노테이션을 이용하여 객체를 불러와보겠습니다. 동작원리는 같은데(?) 사용 방법이 다른 것입니다. 

반응형