LgTV.java
package org.joonzis.DI_12_component;
import org.springframework.stereotype.Component;
/*
* @Component 와 @Configuration/@Bean 은 기능이 비슷
* @Component 는 클래스 단위
* @Bean 은 메소드 단위
*/
/*
* java => @Component("tv")
* xml => <bean id="tv" class="org.joonzis.DI_12_component.LgTV" />
*/
@Component("tv")
public class LgTV implements TV{
public LgTV() {
System.out.println("--> LgTV 객체 생성");
}
@Override
public void powerOn() {
System.out.println("--> LgTV 전원 켠다");
}
@Override
public void powerOff() {
System.out.println("--> LgTV 전원 끈다");
}
@Override
public void volumeUp() {
System.out.println("--> LgTV 소리 올린다");
}
@Override
public void volumeDown() {
System.out.println("--> LgTV 소리 내린다");
}
}
TV.java
package org.joonzis.DI_12_component;
public interface TV {
public void powerOn();
public void powerOff();
public void volumeUp();
public void volumeDown();
}
TVUser.java
package org.joonzis.DI_12_component;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class TVUser {
public static void main(String[] args) {
// 1. Spring 컨테이너 구동
AbstractApplicationContext ctx =
new GenericXmlApplicationContext("applicationContext12.xml");
TV tv = (TV)ctx.getBean("tv"); // "tv" : 컴포넌트 이름
tv.powerOn();
tv.volumeUp();
tv.volumeDown();
tv.powerOff();
ctx.close();
}
}
applicationContext12.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-3.1.xsd">
<!--
컴포넌트 스캔(conponent-scan) 설정
사용할 객체들을<bean> 등록하지 않고, 자동으로 생성하기 위해 사용
@Component가 설정된 클래스들을 자동으로 객체 생성한다.
* base-package : 해당 패키지로 시작하는 모든 패지키를 스캔 대상에 포함
-> org.joonzis.*
<context:component-scan base-package="org.joonzis"/>
아래 선언한 태그는 클래스의 충돌을 막기위해 해당 패키지 한정으로 처리
-->
<!-- 패지키 충돌을 막기 위함 -->
<context:component-scan base-package="org.joonzis.DI_12_component"></context:component-scan>
</beans>
반응형
'Spring & Spring Boot' 카테고리의 다른 글
[Spring] 어노테이션 정리 (1) | 2025.02.16 |
---|---|
[STS] Eclipse STS lombok.jar 추가 (0) | 2023.07.16 |
DI_11_annoConfig (0) | 2023.07.06 |
DI_10_annoConfig (1) | 2023.07.06 |
DI_9_collection (0) | 2023.07.06 |