탑크리에듀(http://www.topcredu.co.kr)에서 제공하는 스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)강좌입니다. Spring Ioc 실습(어노테이션기반, 인터페이스, 세터주입)에 대한 자료이니 많은 도움 되셨길 바랍니다. http://ojc.asia/ 에 들어가시면 보다 많은 자료들이 게시되어 있으니 참고바랍니다^^.
1. 스프링프레임워크 & 마이바티스
(Spring Framework, MyBatis)
2-3. Spring Ioc 실습(어노테이션기반, 인터페이스, 세터주입)
2-2에서 작성한 예제를 어노테이션 기반으로 변경 해보자.
[Money.java]
package edu.biz.ioc4;
import org.springframework.stereotype.Component;
@Component("money") // DTO같은 컴포넌트 클래스임을 의미, @Named와 동일
public class Money {
private int amount;
public Money() {
}
public Money(int amt) {
this.amount = amt;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
[Car.java]
package edu.biz.ioc4;
import org.springframework.stereotype.Component;
2. @Component("car")
public class Car {
private String name;
public Car() {
}
public Car(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
[CarMaker.java]
package edu.biz.ioc4;
public interface CarMaker {
//돈을 받고 차를 판다
public Car sell(Money money) ;
}
[HyundaiMaker.java]
package edu.biz.ioc4;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("hyundai") //@Named와 동일, 서비스계층의 클래스임을 의미
public class HyundaiMaker implements CarMaker{
@Autowired //@Inject와 동일
private Car car;
public Car sell(Money money) {
System.out.println("I sold a Sonata.");
car.setName("Sonata");
return car;
3. }
}
[DaewooMaker.java]
package edu.biz.ioc4;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service(“daewoo")
public class DaewooMaker implements CarMaker{
@Autowired
private Car car;
public Car sell(Money money) {
System.out.println("I sold a Tosca.");
car.setName(“Tosca");
return car;
}
}
[OrderManager.java]
package edu.biz.ioc4;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service("orderManager")
public class OrderManager {
private String name;
@Autowired // TYPE이 CarMaker 인것 찾아 자동 주입, 여러 개인 경우
Qualifier로 지정
@Qualifier("daewoo")
private CarMaker maker;
@Autowired // TYPE이 Money 인 것을 찾아 자동 주입
private Money money;
public OrderManager() {
}
public void order() {
money.setAmount(1000);
Car car = this.maker.sell(money);