jar 패키지 의 대상 을 주입 하고@autowired 의 인 스 턴 스 를 사용 합 니 다.
3497 단어 주입jar 가방대상@autowired
@Configuration
public class DemoConfiguration {
@Bean
public Demo demo() {
return new Demo(); // Jar
}
}
보충 지식:제3자 패키지 도입@Autowired Spring 주입 실패 솔 루 션문제 배경
개발 프로젝트 에서 제 가 맡 은 마이크로 서 비 스 는 중앙 데스크 톱 서비스 층 에 의존 해 야 합 니 다.이 서비스의 기능 인 터 페 이 스 를 호출 할 때@Autowired 주입 방식 이 잘못 되 었 습 니 다.
Description:
Field clientRouter in com.baiwang.cloud.spush.client.SPushClient required a bean of type 'com.baiwang.cloud.spush.client.router.IClientRouter' that could not be found.
Action:
Consider defining a bean of type 'com.baiwang.cloud.spush.client.router.IClientRouter' in your configuration.
2.문제 해결
1.@Componentscan 은 스 캔 한 구성 이 있 는 패키지 경로 나 class 파일 을 지정 합 니 다.파 라 메 터 를 지정 하지 않 을 때 SpringBoot 의@Componentscan 은 기본적으로 같은 디 렉 터 리 와 같은 디 렉 터 리 의 클래스 파일 을 검색 합 니 다.따라서 Spring 은 제3자 가방 에 주입 하고@ComponentScan 스 캔 을 통 해 주입 해 야 할 가방 을 스 캔 해 야 합 니 다.
첫 번 째 가방 이름 은 현재 서비스의 최상 위 디 렉 터 리 패키지 이 고 두 번 째 는 의존 하 는 제3자 가방 이 성공 적 으로 주입 되 었 습 니 다.이미 사용 할 수 있 으 니 주입 한 가방 을 넣 는 것 을 흉 내 냈 다.
2.새로운 가방 을 주입 한 후에 도 시동 이 잘못 되 었 습 니 다.
같은 오류 에 따라 저 는 해당 하 는 종 류 를 찾 았 습 니 다.위 에서 스 캔 한 경 로 는 인터페이스 층 일 뿐 이라는 것 을 발 견 했 습 니 다.
그래서 나 는 실 현 된 service 층 의 가방 경 로 를 찾 아 똑 같이 주입 했다.
이번 시동 은 또 다른 오 류 를 보고 했다.
3、Field redisTemplate in com.baiwang.media.basic.cache.config.RedisConfig required a single bean, but 2 were found:
이 오 류 는 알림 에 따라 자세히 생각해 보면 알 수 있 을 것 입 니 다.RedisConfig 라 는 종 류 는 RedisTemplate 를 주 입 했 습 니 다.Redis 라 는 종 류 는 사용 빈도 가 매우 많 습 니 다.그리고@Autowired 는 유형 에 따라 주 입 했 기 때문에 위 에서 스 캔 한 가방 RedisTemplate 라 는 종 류 는 두 부 를 저장 합 니 다.
문제 에서 문 제 를 찾 으 려 면 기초 가 튼튼 하지 않 으 면 모두 바 이 두 에 의지해 야 한다.Qualifier@Primary 라 는 두 개의 주석,@Qualifier 주해 의 용도:하나의 인터페이스 가 여러 개 실 현 될 때 어떤 종류의 실현 을 구체 적 으로 호출 할 지 이름 을 지정 하기 위해 이름 을 지정 하여 이름 으로 주입 할 수 있 습 니 다.@Primary 로 주석 한 Bean 은 다른 Bean 보다 우선 해 야 합 니 다.Service 를 더 많이 사용 합 니 다.여기 서@Qualifier 를 사용 하면 됩 니 다.
마지막 으로 예상대로 시동 성공!
마지막
이러한 스캐닝 방식 은 매우 지루 해 보이 기 때문에 주 입 된 가방 의 맨 위 디 렉 터 리 를 간소화 할 수 있다.
마지막 으로 이렇게 되 었 습 니 다.다른 유형의 주입 도 충돌 할 수 있 는 지 확인 해 야 합 니 다!!
그리고 제3자 주입 에 의존 하려 면 이것 이 필요 합 니 다.
위 와 같은 jar 가방 에 주 입 된 대상 은@autowired 의 인 스 턴 스 로 여러분 에 게 공 유 된 모든 내용 입 니 다.참고 하 시 기 를 바 랍 니 다.많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spring 네 가지 의존 주입 방식에 대한 상세한 소개일반적인 자바 개발에서 프로그래머는 특정한 클래스에서 다른 클래스에 의존하는 방법을 필요로 한다. 스프링은 의존 주입 사상을 제기했다. 즉, 의존 클래스는 프로그래머가 실례화하지 않고spring 용기를 통해 new가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.