jar 패키지 의 대상 을 주입 하고@autowired 의 인 스 턴 스 를 사용 합 니 다.

주 입 된 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 의 인 스 턴 스 로 여러분 에 게 공 유 된 모든 내용 입 니 다.참고 하 시 기 를 바 랍 니 다.많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기