intellij가 자동 유선 저장소에 대한 유형의 빈을 사용합니다.
간단한 단위 테스트를 만들었지 만 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
IntelliJ IDEA Ultimate (2016.3.4 163)의 내 버전이이를 지원하는 것입니다. 트릭은 스프링 데이터를 활성화해야한다는 것입니다.
@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{
/**/
}
Bean 설정 파일에 @Component
넣거나 넣는 것이 @configuration
작동하는 것입니다.
@Configuration
public class MyApplicationContext {
@Bean
public DirectoryScanner scanner() {
return new WatchServiceDirectoryScanner("/tmp/myDir");
}
}
@Component
public class MyApplicationContext {
@Bean
public DirectoryScanner scanner() {
return new WatchServiceDirectoryScanner("/tmp/myDir");
}
}
IDE를 행복하게 만들기 위해 코드를 변경하지 않습니다. 스프링 패싯에 모든 구성 요소를 추가하여 해결했습니다.
- "서비스, 프로세서 및 라우터"이름 또는 원하는 이름으로 그룹을 작성하십시오.
- "Spring Application Context"를 다시 작성하여 이전에 제거하고 상위로 사용하십시오.
당신이 좋은 전달하는 긴 당신의 검사 결과로, 충돌 alt + enter
오류 위에 커서를 취하고 당신은 발견 할 첫 번째 항목의 하위 메뉴 내에서 Disable Inspection
것을 선택
그리고 마지막으로 중요한 정보 중 하나- ComponentScan
앱이 연결해야 할 사항을 알 수 있도록 추가하십시오 . 이 질문의 경우에는 관련이 없습니다. 그러나 전혀 수행 @autowiring
되지 않습니다 .
@Configuration
@ComponentScan(basePackages = {
"some_package",
})
public class someService {
당신이해야 할 일 추가
@ComponentScan("package/include/your/annotation/component")
에서 AppConfiguration.java
.
나는 당신의 생각 때문에 AppConfiguraion.java
의 패키지가 깊은 당신의 주석 구성 요소에 비해 (@Service, @Component ...)의 패키지
같은 "package/include/your/annotation/component/deeper/config"
.
내 응용 프로그램에서 비슷한 문제가 발생했습니다. 주석을 추가했을 때 잘못된 강조 표시가 사라졌습니다.
@ContextConfiguration(classes = {...})
IntelliJ v.14에 나타날 때이 오류를 숨기기 위해이 주석을 사용하고 있습니다.
@SuppressWarnings("SpringJavaAutowiringInspection")
Spring Boot 애플리케이션에서 비슷한 문제가 발생했습니다. 애플리케이션은 Feign (주석이있는 인터페이스에서 요청을 합성하는 HTTP 클라이언트)을 사용합니다. 인터페이스 SomeClient
주석이 달린 @FeignClient
Feign은이 인터페이스를 구현하는 런타임 프록시 클래스를 생성합니다. 어떤 Spring 컴포넌트가 type의 bean을 autowire하려고 할 때 SomeClient
Idea SomeClient
는 실제 클래스가 프로젝트에 실제로 존재하지 않고 Idea가 @FeignClient
어떤 식 으로든 주석 을 이해하도록 가르치지 않았기 때문에 유형의 bean이 발견 되지 않는다고 불평 합니다 .
솔루션 : 인터페이스 SomeClient
에 @Component
. (우리의 경우 @FeignClient
주석을 SomeClient
직접 사용하지 않고 주석 @OurProjectFeignClient
이 달린 메타 주석 @FeignClient
을 사용하고 @Component
주석을 추가 하는 것도 작동합니다.)
서비스 클래스에서 @Service 주석을 놓쳤는 지 확인하십시오.
이것은 여전히 최신 IntelliJ의 버그로 보이며 가능한 캐싱 문제와 관련이 있습니까?
위에서 언급 한 mk321로 @Repository 어노테이션을 추가하고 저장 한 다음 어노테이션을 제거하고 다시 저장하면 문제가 해결됩니다.
이 작업을 수행하려면 다음 코드 만 있으면됩니다.
@ComponentScan
public class PriceWatchTest{
@Autowired
private PriceWatchJpaRepository priceWatchJpaRepository;
...
...
}
@EnableAutoConfiguration을 사용하여 문제를 해결해야했지만이 오류는 기능에 영향을 미치지 않았습니다.
스프링 부트 애플리케이션 메인 클래스에 @EnableAutoConfiguration을 배치하면 해결할 수 있습니다.
나에게 해결책은 중복되기 때문에 밑줄을 긋는 @EnableAutoConfiguration
Application 클래스에 배치 하는 것이 었습니다 @SpringBootApplication
. 그것을 삭제하고 누락 된 콩에 대한 모든 경고가 사라졌습니다! 어리석은 봄 ...
제 경우에는 @Autowired를 시도한 디렉토리가 같은 수준이 아니 었습니다.
동일한 구조 수준에서 설정 한 후 오류가 사라졌습니다.
도움이되기를 바랍니다.
내 스프링 부트 애플리케이션에서이 문제에 대한 나의 해결책은 스프링 애플리케이션 컨텍스트를 열고 누락 된 autowired bean에 대한 클래스를 수동으로 추가하는 것입니다!
(프로젝트 구조 메뉴 또는 스프링 도구 창을 통해 액세스 ... "Spring Application Context"편집)
따라서 내 ExampleApplication 스프링 구성을 포함하는 SpringApplicationContext 대신 누락 된 Bean도 포함됩니다.
SpringApplicationContext :
- ExampleApplication.java
- MissingBeanClass.java
et voilà : 오류 메시지가 사라졌습니다!
때때로-제 경우에는 그 이유가 잘못된 수입 때문입니다. 실수로 수입했습니다
import org.jvnet.hk2.annotations.Service
대신에
import org.springframework.stereotype.Service
Idea가 제안한 수입품의 첫 번째 선택을 맹목적으로 수락함으로써. 처음 발생했을 때 몇 분 걸렸습니다. :-)
놀랍게도 Eclipse로 성공적으로 실행 된 Feign 지향 프로젝트는 InteliJ에서 실행할 수 없습니다. 응용 프로그램을 시작했을 때 InteliJ는 내가 serviceImpl 계층에 주입하려고 시도한 Feign 클라이언트에 대해 다음과 같이 불평했습니다. 필드 personRestClient (내 Feign 클라이언트) ...에서 찾을 수없는 유형의 빈이 필요합니다. 구성에서 '....'유형의 Bean을 정의하는 것을 고려하십시오.
나는 무엇이 잘못되었는지 이해하려고 오랜 시간을 낭비했습니다. 완전히 이해하지 못하는 솔루션 (InteliJ 용)을 찾았습니다.
- Alt Shift F10 (또는 실행 메뉴)
- '구성 수정'을 선택하십시오.
- 구성 창에서 '제공된 범위에 종속성 포함'확인란을 선택합니다.
- 애플리케이션 실행
또는 Eclipse 선택 :)
Bean의 패키지가 작성되었는지 확인하십시오.
//Check if this is written right
package com.package1.package2.package3
import ...
@Service
class ServiceX {
...
}
테스트 클래스에는 @AutoConfigureMockMvc를 사용하십시오.
애플리케이션 프로그램을 구성하면 모두 정상입니다.
IDEA에 mybatis 플러그인을 설치하여 문제를 해결했습니다. Mybatis 설치를 설치하면 사라집니다.
내 경우에는 @Autowired 를 @Resource 로 변경 하고 잘못된 힌트가 사라졌습니다.
이 문제도 발생 원인 스프링 패싯을 제거하여 해결했습니다.
- 파일-> 프로젝트 구조
- 고르다
Facets
- 스프링 제거
행운을 빕니다!
'IT' 카테고리의 다른 글
Postgres : bash 펼쳐보기에서 다시 작성 / 다시 채우기 전에 전체 데이터베이스를 지우십시오. (0) | 2020.07.25 |
---|---|
float : 왼쪽가-경우 div를 최대 너비로 확장 (0) | 2020.07.25 |
SessionState와 ViewState의 차이점은 무엇입니까? (0) | 2020.07.25 |
APK META-INF / LICENSE.txt에 복사 된 Android Studio 0.4 두 파일 (0) | 2020.07.25 |
…의 강화 / 키를위한 TypeScript? (0) | 2020.07.25 |