답변:
정적 필드를 사용하면 정적 메서드 사용이 권장되기 때문입니다. 그리고 정적 방법은 악합니다. 의존성 주입의 주요 목적은 컨테이너가 사용자를 위해 객체를 생성하고 연결하도록하는 것입니다. 또한 테스트를 더 쉽게 만듭니다.
정적 메서드를 사용하기 시작하면 더 이상 개체의 인스턴스를 만들 필요가 없으며 테스트가 훨씬 더 어렵습니다. 또한 주어진 클래스의 여러 인스턴스를 만들 수 없습니다. 각각 다른 종속성이 주입됩니다 (필드가 암시 적으로 공유되고 전역 상태를 생성하기 때문에-또한 악합니다).
@BeforeClass
그 방법 액세스 bean을 SpringJUnit4ClassRunner에, 그리고이 @Autowired
시험에 .. 당신은 기본적으로 할 수 없습니다. 짜증나 네요.
클래스 로더가 정적 값을로드 할 때 Spring 컨텍스트는 아직로드되지 않았기 때문입니다. 따라서 클래스 로더는 빈에 정적 필드를 제대로 삽입하지 못하고 실패합니다.
이 솔루션으로 스프링에 정적 필드를 자동으로 연결할 수 있습니다.
@Component
public class TestClass {
private static Test test;
@Autowired
public void setTest(Test test) {
TestClass.test = test;
}
}