>Java >java지도 시간 >생성자에서 내 Autowired Bean이 Null인 이유는 무엇입니까?

생성자에서 내 Autowired Bean이 Null인 이유는 무엇입니까?

DDD
DDD원래의
2024-11-16 05:45:03989검색

 Why is My Autowired Bean Null in the Constructor?

생성자에서 Bean 자동 연결: Null 참조 이해

Spring 관리 POJO로 작업할 때 @Autowired를 사용하여 종속성을 주입하는 것이 일반적입니다. 주석. 그러나 일부 개발자는 생성자에서 액세스할 때 autowired Bean이 null인 당황스러운 문제에 직면합니다. 이 글의 목적은 이 동작을 명확히 하고 해결책을 제공하는 것입니다.

제공된 답변에서 언급했듯이 자동 연결은 일반적으로 객체 생성 후에 발생합니다. 이는 생성자 내에서 autowired bean에 대한 참조가 null일 가능성이 높다는 것을 의미합니다. 이 문제를 해결하려면 초기화 코드를 생성자에서 @PostConstruct로 주석이 달린 별도의 메서드로 이동하는 것이 좋습니다.

다음 수정된 코드 조각은 이 접근 방식을 보여줍니다.

@Component
public class DocumentManager implements IDocumentManager {

  @Autowired
  private IApplicationProperties applicationProperties;

  // Move initialization code to a PostConstruct method
  @PostConstruct
  public void init() {
    startOOServer();
  }

  private void startOOServer() {
    if (applicationProperties != null) {
      // Rest of the initialization code here
    }
  }

  // ... Rest of the class remains the same
}

주석을 달아서 @PostConstruct를 사용하여 init 메소드를 사용하면 Spring은 빈이 생성된 후 완전히 초기화되기 전에 이를 자동으로 호출합니다. 이렇게 하면 초기화 로직 내에서 applicationProperties Bean을 사용할 수 있습니다.

위 내용은 생성자에서 내 Autowired Bean이 Null인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.