Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- framework
- 백준
- 코딩
- cleancode
- 엘라스틱서치
- Baekjoon
- Java
- JPA
- 자바
- spring boot
- Spring
- 데이터베이스
- 프레임워크
- 그리디
- 개발자
- 애자일프로그래밍
- API
- 스프링
- 읽기쉬운코드
- 코드
- 코딩테스트
- 알고리즘
- database
- 개발
- 그리디알고리즘
- Elasticsearch
- 클린코드
- 애자일
- 애자일기법
- ES
Archives
- Today
- Total
튼튼발자 개발 성장기🏋️
#1 : spring의 핵심 DI(Dependency Injection) 본문
반응형
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 |