[Spring] Spring DI

DEVRANG·2022년 12월 23일
0

Spring DI

유연성 증대, 보수용이, 객체지향 프로그래밍

누더기지만 예쁜 내새끼 코드말고
나중에는 Spring DI를 자유자재로 고민하고 설계하고 구현하는
개발자가 되고싶다
재밌다!!!!!!

Propertise

Map방식과 유사

-Map 방식: (key,value)값을 (String,Object)타입으로 저장
-Propertise: (key,value)값을 (String,String)타입으로 저장
-Propertise의 load()메서드 파일 읽어오기에 용이

package com.fastcampus.ch3.diCopy1;


import java.io.FileReader;
import java.util.Objects;
import java.util.Properties;

class Car{ }
class SportsCar extends Car{}
class Truck extends  Car{}
// ** Car 조상 클래스를 상속받는 하위 클래스들 3개
class Engine{}
// ** 덩그러니 엔진 클래스 

public class Main1 {
    public static void main(String[] args) throws  Exception{
        Engine engine = (Engine) getObject("engine");
        // ** 엔진 객체 생성, getObject() 메서드를 따로 빼서 설계하여 유연성 증대 
        // ** Object타입으로 설정하여 형변환하여 다른 타입과 유연성 증대
        System.out.println("engine = " + engine);
       
    }
    //** getObject() 메서드 따로 빼내어 만듦
    // Object타입으로 선언하여 유연성 증대 (Car가 오든~ , Engine이 오든~ 모두 사용 가능)
    static Object getObject(String key) throws  Exception{
        Properties p = new Properties();
        // ** Propertise객체 생성 
        p.load((new FileReader("config.txt")));
        // ** Propertise의 .load()메서드로 "config.txt"의 파일정보 읽어와 저장 

        Class clazz = Class.forName(p.getProperty(key));
        // ** Class객체 이용하여 config.txt파일의 이름 불러옴
        // ** Propertise 객체에 저장되어 있는 key값 (ex: car,engine 이용하여 찾아옴)

        return clazz.newInstance();
        // ** 결과값 객체로 반환
    }
}

<config.txt>

car=com.fastcampus.ch3.diCopy1.SportsCar
engine=com.fastcampus.ch3.diCopy1.Engine

유연성 증대

-여러 데이터타입간 상호 유연성 증대
-코드 수정 시 config.txt내용만 수정하면 되므로 보수용이
-객체지향 프로그래밍의 장점

profile
완주가 목표인 호랑이

0개의 댓글