[java] intellij가 자동 유선 저장소에 대한 유형의 Bean을 찾을 수 없다고 잘못 설명했습니다.
간단한 단위 테스트를 만들었지 만 IntelliJ가 빨간색으로 잘못 강조 표시합니다. 오류로 표시
콩이 없습니까?
아래에서 볼 수 있듯이 테스트를 통과합니까? 자동 배선이되어야합니까?
답변
주석을 사용하여 Spring Boot 응용 프로그램을 만들 때 이와 동일한 문제가 발생했습니다 @SpringBootApplication
. 이 주석은 나타내고 @Configuration
, @EnableAutoConfiguration
그리고 @ComponentScan
받는 따른 스프링 참조 .
예상대로 새로운 주석이 제대로 작동하고 응용 프로그램이 원활하게 실행되었지만 Intellij 는 충족되지 않은 @Autowire
종속성 에 대해 계속 불평했습니다 . 마자 내가 사용으로 다시 변경으로 @Configuration
, @EnableAutoConfiguration
그리고 @ComponentScan
개별적으로, 오류가 정지했다. Intellij 14.0.3 (및 이전 버전도 가능)이 아직 @SpringBootApplication
주석 을 인식하도록 구성되지 않은 것 같습니다 .
지금까지 오류로 인해 많은 방해가된다면 세 가지 주석으로 되돌아갑니다. 그렇지 않으면 테스트가 통과되므로 Intellij를 무시 하십시오.
항상 기억해…
사람은 항상 기계보다 큽니다.
답변
@Repository
저장소 클래스에 Spring 주석 을 추가하십시오 .
이 주석없이 작동해야한다는 것을 알고 있습니다. 그러나 이것을 추가하면 IntelliJ는 오류를 표시하지 않습니다.
@Repository
public interface YourRepository ...
...
확장 Repository
클래스 와 함께 스프링 데이터를 사용하면 충돌이 발생합니다. 그런 다음 명시 적 페이지를 표시해야합니다.
import org.springframework.data.repository.Repository;
...
@org.springframework.stereotype.Repository
public interface YourRepository extends Repository<YourClass, Long> {
...
}
다음으로 오류없이 저장소를 자동으로 연결할 수 있습니다.
@Autowired
YourRepository yourRepository;
아마 좋은 해결책은 아닙니다 (리포지토리 엄을 두 번 등록하려고한다고 생각합니다). 그러나 나를 위해 일하고 오류를 표시하지 않습니다.
새 버전의 IntelliJ에서 수정 될 수 있습니다. https://youtrack.jetbrains.com/issue/IDEA-137023
답변
답변
@ComponentScan이 구성 요소를 스캔해야하는 위치를 표시해야하는 경우가 있습니다. 패키지를이 주석의 매개 변수로 전달하면됩니다. 예 :
@ComponentScan(basePackages={"path.to.my.components","path.to.my.othercomponents"})
그러나 이미 언급했듯이 @SpringBootApplication 주석은 @ComponentScan을 대체하므로 이러한 경우 동일한 작업을 수행해야합니다.
@SpringBootApplication(scanBasePackages={"path.to.my.components","path.to.my.othercomponents"})
적어도 제 경우에는 Intellij가 불평을 중단했습니다.
답변
답변
나는 spring-boot 2.0을 사용하고 있으며 intellij 2018.1.1 Ultimate Edition과 같은 문제에 직면했습니다.
@EnableAutoConfiguration을 기본 응용 프로그램 클래스에 배치하여 해결했습니다.
@SpringBootApplication
@EnableAutoConfiguration
class App{
/**/
}
답변
서비스 클래스에서 @Service 주석을 놓쳤는 지 확인하십시오.