[Spring] Spring DI: 객체컨테이너(Map)

DEVRANG·2022년 12월 23일
0

객체 컨테이너: Map

Map: (String,Object)

package com.fastcampus.ch3.diCopy2;


import org.springframework.context.annotation.Bean;

import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

class Car{ }
class SportsCar extends Car{}
class Truck extends  Car{}
class Engine{}

// ** AppContext 별도 생성 
class ApppContext {
    Map map; //객체 저장소
	
    // ** 생성자에서 Map 객체 생성 
    ApppContext(){
        map = new HashMap();

        try {
            Properties p = new Properties();
            p.load((new FileReader("config.txt")));
            // ** Propertise 객체에서 읽어온 내용을 map에 저장 

            //1. Propertise 내용을 map에 저장
            map = new HashMap(p);

            //2. 반복문으로 클래스이름을 얻어서 객체 생성해서 다시 map에 저장
            for(Object key : map.keySet()){ 
            //map에 저장된 key이름 반복문 돌려서 Object객체에 저장
                Class clazz = Class.forName((String)map.get(key));
                map.put(key,clazz.newInstance());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    // ** Spring에서는 Object객체를 Bean이라고 많이 부름 
    Object getBean(String key){
        return  map.get(key);
    }
}

public class Main2 {
    public static void main(String[] args) throws  Exception{
    // ** AppContext 객체 생성 
        ApppContext ac = new ApppContext();

        Car car = (Car)ac.getBean("car");
        Engine engine = (Engine) ac.getBean("engine");

        System.out.println("car = " + car);
        System.out.println("engine = " + engine);
    }

}

객체를 저장하는 Map

  • Propertise 객체를 Map에 저장하여 사용
profile
완주가 목표인 호랑이

0개의 댓글