시뻘건 개발 도전기

#1 : spring의 핵심 DI(Dependency Injection) 본문

Framework/spring

#1 : spring의 핵심 DI(Dependency Injection)

시뻘건볼때기 2020. 4. 30. 00:05
반응형

  spring은 한국 내에서는 표준 framework가 되었다. 개발 툴 또한 표준화가 되어있는 것 같다.

여기서 framework란 특정 목적에 맞게 만들기 쉽게 갖춰진 틀이라고 보고있다.

 

  spring에서 잘 알아야하는 것들 중 가장 기본이 되는 것이 DI(Dependency Injection)이다. DI란 일반 java프로그래밍에서 new 연산자를 사용하여 객체를 만들었다면, 외부에서 주입해주는 방법을 말한다. 여기서 외부는 주로 xml파일을 일컫는다.

 

  loggerUtil이라고하는 LoggerUtil bean을 만들어준다.

생성자는 constructor-arg 태그를 사용하여 실행하며 setter는 property 태그를 사용하는 것을 볼 수 있다.

	<bean id="temp" class="ga.dotori.temp.Temp" />	<!-- bean 생성 -->

	<bean id="loggerUtil" class="ga.dotori.util.LoggerUtil">
		<!-- 생성자 -->
		<constructor-arg value="[TEST]" />
		<constructor-arg value="[DOTORI]" />

		<!-- setter -->
		<property name="PREFIX" value="[PREFIX]" />
		<property name="POSTFIX" value="[POSTFIX]" />

		<!-- ArrayList setter -->
		<property name="arrayList">
			<list>
				<value>나는</value>
				<value>테스트</value>
				<value>이다.</value>
			</list>
		</property>

		<!-- 객체 주입 -->
		<property name="temp">
			<ref bean="temp" />
		</property>

	</bean>

 

public class LoggerUtil {

	private String PREFIX;
	private String POSTFIX;
	private Temp temp;
	private ArrayList<String> arrayList;
	
	public LoggerUtil(String PREFIX, String POSTFIX) {
		this.PREFIX = PREFIX;
		this.POSTFIX = POSTFIX;
	}
	
	public String getPREFIX() {
		return PREFIX;
	}

	public void setPREFIX(String pREFIX) {
		PREFIX = pREFIX;
	}

	public String getPOSTFIX() {
		return POSTFIX;
	}

	public void setPOSTFIX(String pOSTFIX) {
		POSTFIX = pOSTFIX;
	}
	
	public Temp getTemp() {
		return temp;
	}

	public void setTemp(Temp temp) {
		this.temp = temp;
	}

	public ArrayList<String> getArrayList() {
		return arrayList;
	}

	public void setArrayList(ArrayList<String> arrayList) {
		this.arrayList = arrayList;
	}

	public void log() {
		System.out.println(PREFIX + " LoggerUtil.log() " + POSTFIX);
	}
}

 

설정된 xml에서 좀전에 선언했던 loggerUtil bean을 가져와서 logger에 주입하여 객체로써 사용하는 코드를 볼 수 있다.

 

	public static void main(String[] args) {
		String config = "classpath:appContext.xml";
		GenericXmlApplicationContext appContext = new GenericXmlApplicationContext(config);
		LoggerUtil logger = appContext.getBean("loggerUtil", LoggerUtil.class);

		logger.log();
        
		appContext.close();
	}

 

 

생성자로 초기화한 이후에 setter로 다시 init을 시켜주었으므로 다음과 같은 결과 값을 볼 수 있다.

반응형

'Framework > spring' 카테고리의 다른 글

#6 : AOP (Aspect Oriented Programming)  (0) 2020.05.03
#5 : bean setting  (0) 2020.05.02
#4 : Bean Scope  (0) 2020.05.01
#3 : Container Life Cycle  (0) 2020.05.01
#2 : DI 활용  (0) 2020.05.01
Comments