>Java >java지도 시간 >종속성 주입을 위해 Spring의 @Autowired 주석이 어떻게 작동합니까?

종속성 주입을 위해 Spring의 @Autowired 주석이 어떻게 작동합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-10 12:27:15861검색

How Does Spring's @Autowired Annotation Work for Dependency Injection?

Spring @Autowired 사용법 이해

귀하의 질문에서 Spring의 @Autowired 주석 활용을 이해하는 데 어려움을 겪었습니다. 다음은 귀하의 쿼리를 해결하기 위한 포괄적인 설명입니다.

Autowired 주석 및 해당 애플리케이션

@Autowired 주석은 Bean 종속성 생성 프로세스를 자동화하여 수동 구성이 필요하지 않습니다. XML 파일에서. 주입이 필요한 속성, 생성자 매개변수 및 setter 메소드를 식별하고 적절한 Bean을 자동으로 주입합니다.

예제 1에서는 @Autowired 주석이 setMovieFinder 메소드에 적용되어 Spring이 MovieFinder 인터페이스의 인스턴스를 movieFinder 속성에 삽입해야 합니다.

예제에서 2에서는 @Autowired 주석이 prepare 메소드에 사용되는데, 이는 Spring이 두 개의 Bean, MovieCatalog 및 CustomerPreferenceDao를 해당 속성에 주입해야 함을 의미합니다.

Bean 모호성 해결

여러 빈이 동일한 인터페이스를 구현할 때 Spring은 어떤 빈을 주입할지 결정하기 위해 한정자 주석을 사용합니다. 귀하의 예에서 다음과 같이 한정자 주석을 추가하면 bean 모호성이 해결됩니다.

@Autowired
@Qualifier("redBean")
private Color color;

이것은 redBean bean이 color 속성에 주입되어야 함을 지정합니다. 이에 따라 XML 파일에서 빈을 정의할 수 있습니다.

<bean>

빈 스캔 구성

빈으로 관리해야 하는 클래스를 자동으로 식별하려면 다음을 사용할 수 있습니다. <컨텍스트:구성요소 스캔> 애플리케이션 컨텍스트 XML 파일의 태그:

<context:component-scan base-package="com.mycompany.movies"/>

이는 지정된 패키지 및 하위 패키지에서 @Component, @Controller 또는 @Repository로 주석이 달린 클래스를 검색하고 이에 대한 Bean 정의를 생성합니다.

대체 종속성 주입 메커니즘

@Inject is @Autowired와 유사하지만 Spring에만 국한되지 않는 Java 표준 주석입니다. 또 다른 옵션은 @Autowired와 @Qualifier의 기능을 결합한 @Resource입니다.

모범 사례

유지관리성 향상을 위해 @Inject 또는 @Resource를 사용하는 것이 좋습니다. @Autowired 대신. 또한 메서드보다는 생성자에 종속성 주입을 적용하여 조기 유효성 검사를 활성화하고 NullPointerException을 방지하는 것이 좋습니다.

위 내용은 종속성 주입을 위해 Spring의 @Autowired 주석이 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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