> Java > java지도 시간 > 본문

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

DDD
풀어 주다: 2024-11-16 05:45:03
원래의
892명이 탐색했습니다.

 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿