2020년 7월 18일 토요일

(스프링강좌)Spring Ioc 실습(어노테이션기반, 인터페이스, 세터주입)

2-3. Spring Ioc 실습(어노테이션기반, 인터페이스, 세터주입)

http://ojc.asia/bbs/board.php?bo_table=LecSpring&wr_id=833

n 이전에 작성한 예제를 어노테이션 기반으로 변경 해보자.

[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]

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

}

}

실행 후 결과를 확인하자.

ioc4.xml을 대신하여 자바 설정으로 변경해보자.

[MyConfig.java]

package edu.biz.ioc4;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

@Configuration

@ComponentScan("edu.biz.ioc4")

public class MyConfig {

}

[OrderManagerApp.java]

package edu.biz.ioc4;

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class OrderManagerApp {

public static void main(String[] args) {

// @Configuration 어노테이션이 적용된 클래스를 설정 정보로 이용하기 위해

// AnnotationConfigApplicationContext를 이용하면 된다.

ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);

OrderManager manager = context.getBean(OrderManager.class);

manager.order();

}

}

[수정된 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();

}

}

(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...