다음 테스트 클래스가 있습니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/**/context.xml")
public class HAD_Test extends TestCase {
@Autowired
private UgcService ugcService;
@Test
public void test() {
// this binding works fine
Ugc ugc = ugcService.getRegistro(138355);
...
HAD_Data dData = new HAD_Data(ugc);
data.init();
...
}
}
그런 다음 다른 클래스가 있습니다.
public class HAD_Data {
@Autowired
private ClimaService climaService;
public void init() {
...
// at this point, climaService is null
climaService.getRegistro(556)
...
}
}
내가 가진 문제는 Test 클래스의 바인딩이 완벽하게 적용되고 있지만 HAD_Data와 같이 다른 자동 연결 필드가있는 클래스에서 바인딩되지 않는다는 것입니다. 항상 null 값이 있습니다.
이 바인딩이 할당되지 않은 이유를 모르겠습니다. 아무도 제발 도와 줄 수 있습니까? 다른 정보가 필요하면 포함 할 수 있지만 context.xml이 정확하다고 생각합니다. 일부 바인딩이 제대로 적용 되었기 때문입니다.
고마워, 마크
객체를 생성하는 사람이라면 Spring이 필드를 어떻게 주입 할 것으로 예상합니까?
HAD_Data dData = new HAD_Data(ugc);
Spring은 관리 Bean 만 자동으로 연결할 수 있습니다.
context.xml
for에 빈 선언을 추가 HAD_Data
하고 사용 하십시오 . 당신은 또한 사용할 수있는 @PostConstruct
온 init()
봄 초기화 후 호출을 담당하도록하는 방법.
또한 Java 규칙 _
은 클래스 이름에서 사용을 권장하지 않습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다