레이블이 #IoC어노테이션인 게시물을 표시합니다. 모든 게시물 표시
레이블이 #IoC어노테이션인 게시물을 표시합니다. 모든 게시물 표시

2021년 11월 13일 토요일

스프링 제어의역행(Spring Ioc) 실습(어노테이션기반, 인터페이스, 세터주입)

 스프링 제어의역행(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;

 

@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;

}

}

 

[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);

}

}

 

[ioc4.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"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">

 

<beans>    

   <context:annotation-config/> 생략가능!!

<context:component-scan base-package="edu.biz.ioc4"/>

</beans>

 

4yI44hYepfmLxPUTgAEDSJUbmeYbCgujwweBhrm_

 

[OrderManagerApp.java]

package edu.biz.ioc4;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

public class OrderManagerApp {

public static void main(String[] args) {

ApplicationContext factory = new ClassPathXmlApplicationContext("classpath:ioc4.xml");

OrderManager manager = (OrderManager) factory.getBean("orderManager");

manager.order();

}

}

 

실행 후 결과를 확인하자.

 

XqA_DCnkFHPqtTHXc5wfpKEOdBnIOO0M9PX3AN0m

 

[수정된 OrderManagerApp.java]

package edu.biz.ioc4;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.stereotype.Service;

@Service

public class OrderManagerApp {

       //생성자가 아닌 직접 autowiring은 불가, static변수는 autowiring 안된다.

static OrderManager orderManager;

 

@Autowired

public OrderManagerApp(OrderManager orderManager) {

OrderManagerApp.orderManager = orderManager;

}

 

public static void main(String[] args) {

  ApplicationContext factory =   

new ClassPathXmlApplicationContext("classpath:ioc4.xml");

//OrderManager manager = (OrderManager) factory.getBean("orderManager");

  orderManager.order();

}   

 

}



#스프링IoC, #IoC어노테이션, #스프링교육, #스프링강좌, #자바교육, #제어의역행

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...