> Java > java지도 시간 > 본문

Spring Boot 생성자에서 Autowiring이 실패하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-12 03:14:02
원래의
853명이 탐색했습니다.

Why Does Autowiring Fail in Spring Boot Constructors?

Spring Boot의 생성자 자동 배선

Spring Boot로 작업할 때 자동 배선을 사용하여 Bean 생성자에 종속성을 주입하면 때때로 null 값이 발생할 수 있습니다. 이는 Bean 생성 후에 자동 연결이 발생하기 때문입니다.

주어진 코드 조각에서 @Autowired applicationProperties Bean은 DocumentManager 생성자에서 참조될 때 null이지만 변환 메서드에서 참조될 때는 null이 아닙니다. 문제는 생성자가 실행된 자동 연결이 발생한다는 것입니다.

해결책: 생성 후 초기화

이 문제를 해결하려면 @를 사용하세요. 종속성을 초기화해야 하는 Bean 클래스의 메소드에 대한 PostConstruct 주석. 이 메소드는 Bean 생성 후에 호출되며 필요한 초기화 로직을 수행하는 데 사용될 수 있습니다.

다음은 @PostConstruct 주석을 사용하도록 DocumentManager 클래스를 수정하는 방법입니다.

@Component
public class DocumentManager implements IDocumentManager {

  private Log logger = LogFactory.getLog(this.getClass());
  private OfficeManager officeManager = null;
  private ConverterService converterService = null;

  @Autowired
  private IApplicationProperties applicationProperties;

  // Remove initialization code from constructor
  public DocumentManager() {
  }

  @PostConstruct
  public void initialize() {
    startOOServer();
  }

  ...
로그인 후 복사

여기서 수정된 코드에서는 초기화 로직이 @PostConstruct라는 주석이 붙은 초기화 메서드로 이동되었습니다. 이렇게 하면 Bean 생성 후 메소드가 호출될 때 applicationProperties Bean을 사용할 수 있습니다.

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

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