또는 열거형 값을 사용하여 설정
단일 사례 및 다중 수준 사용 시나리오
인터페이스 방법 구현이 Spring에 의해 관리됩니까? 종속성 주입에서 Spring은 주입할 구현 클래스를 알지 못한 채 NoUniqueBeanDefinitionException을 발생시킵니다. @Primary를 사용하여 주입할 구현 클래스를 Spring에 알려줍니다.
@ComponentScan 성능에 미치는 영향 Spring 애플리케이션 성능에 대한 Bean 구성 최적화
Spring에서는 컴포넌트의 스캔 범위를 설정하여 javaBean 주입 프로세스를 단순화할 수 있습니다
대규모 객체 주입이 필요한 경우 시나리오에서는 @ComponentScan 주석을 사용하여 지정합니다. 물론, 지정된 패키지 경로의 클래스는 Spring이 클래스를 생성하고 관리할 수 있도록 @Component 주석과 함께 추가되어야 합니다. Lazy loading spring은 기본적으로 preloading을 사용하고, Spring 프로젝트가 시작될 때 Bean을 생성합니다.Lazy loading: Spring 프로젝트가 시작될 때 Bean을 생성하지 않고
사용할 때 생성합니다.
필드 주입의 단점:
필드 주입 빈 클래스는 그렇지 않습니다. Bean 클래스 외부에서 볼 수 있음
순환 종속성 문제
주입해야 할 객체를 최종으로 설정할 수 없으며 불변 객체를 삽입할 수 없습니다빈 클래스 필드에 의해 주입된 내용은 빈 클래스 외부에서는 보이지 않습니다
필드 주입을 사용할 때 가장 큰 문제는 주입된 클래스(HealthRecorSercice)의 외부 가시성인데, HealthRecorSercice는 ClientService 클래스에서만 접근 가능하고 접근할 수 없습니다. 컨테이너 환경 외부에서 클래스와 컨테이너 간의 결합이 너무 높아 컨테이너 외부의 대상 개체를 사용합니다.
아래에 표시된 것처럼 A와 B는 순환 종속성을 갖지만 Spring에서 컴파일하는 것이 적법합니다. String 클래스를 시작할 때 예외가 발생하지 않습니다. 필드에 의해 주입된 객체는 필요한 다른 클래스의 인스턴스화 전에만 보고됩니다. 주입.
생성자 주입(공식 권장)
생성자 주입은 클래스의 생성자를 통해 주입됩니다.해결할 수 없습니다: 순환 종속성 문제코드를 읽기가 쉽지 않습니다
생성자 주입을 사용하여 순환 종속성이 발생했습니까? Spring 프로젝트가 시작될 때 순환 종속성 예외가 발생합니다
set 주입으로 해결할 수 있습니다.
클래스 외부에 표시되지 않음
순환 종속성 문제
삽입해야 할 객체를 final로 설정할 수 없고, 불변 객체도 주입할 수 없습니다
위 내용은 Java Spring의 주입 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!