728x90
반응형
https://pabeba.tistory.com/188
이 글을 읽기 전 이전 글을 참고하시면 더 좋습니다.
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 어노테이션을 이용하여 객체를 불러와보겠습니다. 동작원리는 같은데(?) 사용 방법이 다른 것입니다.
반응형
'코딩 개발 > Spring' 카테고리의 다른 글
Spring - DBCP (DataBase Connection Pool) (0) | 2023.07.08 |
---|---|
Spring - @Configuration , @ComponentScan, @Repository, @Service, @Autowired (2) | 2023.07.07 |
xml 파일을 이용한 제어의 역전(IOC)(applicationContext.xml, Maven) (0) | 2023.07.07 |
Spring FrameWork 에 대하여 (+ IOC / DI, 간단한 용어 정리) (0) | 2023.07.07 |
Eclipse 에서 Spring 사용하기 (0) | 2023.07.07 |