package com.example.ex00.dependency;
import org.springframework.stereotype.Component;
import lombok.Data;
@Component // 해당 객체를 Spring에서 관리하도록 설정
@Data
public class Computer {}
package com.example.ex00.dependency;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import lombok.Data;
@Component
@Data
public class Coding {
// 필드 주입
// 굉장히 편하게 주입할 수 있으나 순환 참조(무한 루프)시 오류가 발생하지 않기 때문에 StackOverFlow 발생
// final을 붙이면 오류가 남 -> 다른 곳에서 변형 가능
@Autowired
private Computer computer;
}
package com.example.ex00.dependency;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DependencyTests {
@Autowired
private Coding coding;
@Test
public void checkDependencyInjection() {
log.info("-------------------------");
log.info("coding: " +coding);
log.info("computer: " + coding.getComputer());
log.info("-------------------------");
}
}