Eu criei um teste de unidade simples, mas o IntelliJ está destacando incorretamente o vermelho. marcando-o como um erro
Sem feijão?
Como você pode ver abaixo, passa no teste? Portanto, deve ser conectado automaticamente?
Eu criei um teste de unidade simples, mas o IntelliJ está destacando incorretamente o vermelho. marcando-o como um erro
Sem feijão?
Como você pode ver abaixo, passa no teste? Portanto, deve ser conectado automaticamente?
Respostas:
Eu tive esse mesmo problema ao criar um aplicativo Spring Boot usando sua @SpringBootApplication
anotação. Esta anotação representa @Configuration
, @EnableAutoConfiguration
e @ComponentScan
de acordo com a referência de mola .
Como esperado, a nova anotação funcionou corretamente e meu aplicativo foi executado sem problemas, mas a Intellij continuou reclamando de @Autowire
dependências não preenchidas . Assim que voltei a usar @Configuration
, @EnableAutoConfiguration
e @ComponentScan
separadamente, os erros cessaram. Parece que o Intellij 14.0.3 (e provavelmente também versões anteriores) ainda não está configurado para reconhecer a @SpringBootApplication
anotação.
Por enquanto, se os erros o perturbarem tanto, volte para as três anotações separadas. Caso contrário, ignore o Intellij ... sua resolução de dependência está configurada corretamente, pois seu teste passa.
Sempre se lembre...
O homem é sempre maior que a máquina.
@SpringBootApplication
eu estava recebendo esse erro. Segui o conselho do @ Jaõs Matos usando o scanBasePackages
parâmetro @SpringBootApplication
e especifiquei os pacotes / namespaces que devem ser verificados.
Adicione anotação Spring @Repository
sobre a classe do repositório.
Eu sei que deve funcionar sem esta anotação. Mas se você adicionar isso, o IntelliJ não mostrará erro.
@Repository
public interface YourRepository ...
...
Se você usar o Spring Data com extensão de Repository
classe, serão paginações de conflito. Em seguida, você deve indicar as páginas de explicação.
import org.springframework.data.repository.Repository;
...
@org.springframework.stereotype.Repository
public interface YourRepository extends Repository<YourClass, Long> {
...
}
E a seguir, você pode conectar automaticamente seu repositório sem erros.
@Autowired
YourRepository yourRepository;
Provavelmente não é uma boa solução (acho que você está tentando registrar o repositório duas vezes). Mas trabalhe para mim e não mostre erros.
Talvez a nova versão do IntelliJ possa ser corrigida: https://youtrack.jetbrains.com/issue/IDEA-137023
Minha versão do IntelliJ IDEA Ultimate (2016.3.4 Build 163) parece suportar isso. O truque é que você precisa ter ativado o plug-in Spring Data.
Às vezes, você precisa indicar onde o @ComponentScan deve procurar componentes. Você pode fazer isso passando os pacotes como parâmetro desta anotação, por exemplo:
@ComponentScan(basePackages={"path.to.my.components","path.to.my.othercomponents"})
No entanto, como já mencionado, a anotação @SpringBootApplication substitui @ComponentScan, portanto, nesses casos, você deve fazer o mesmo:
@SpringBootApplication(scanBasePackages={"path.to.my.components","path.to.my.othercomponents"})
Pelo menos no meu caso, Intellij parou de reclamar.
@SpringBootApplication(scanBasePackages={"com.a.b, com.a.c"})
e, embora o aplicativo funcionasse bem, a intellij não gostou. Mudando para @SpringBootApplication(scanBasePackages={"com.a.b", "com.a.c"})
fixo para mim!
Eu sempre resolvo esse problema fazendo o seguinte. Configurações> Inspeções> Spring Core> Código do que você muda de erro para avisar a opção de gravidade
Estou usando o spring-boot 2.0 e o intellij 2018.1.1 ultimate edition e enfrentei o mesmo problema.
Resolvi colocando @EnableAutoConfiguration na classe principal do aplicativo
@SpringBootApplication
@EnableAutoConfiguration
class App{
/**/
}
Redundant declaration: @SpringBootApplication already applies @EnableAutoConfiguration
¯ \ _ (ツ) _ / ¯
Colocar @Component
ou @configuration
no seu arquivo de configuração de bean parece funcionar, ou seja, algo como:
@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");
}
}
Se você não quiser fazer alterações no seu código, apenas para deixar seu IDE feliz. Eu o resolvi adicionando todos os componentes à faceta Spring.
Enquanto seus testes estiverem passando, você é bom, pressionando alt + enter
o cursor sobre o erro e dentro do submenu do primeiro item, você encontrará, Disable Inspection
selecione
Eu tive um problema semelhante no aplicativo Spring Boot. O aplicativo utiliza Feign (solicitações de sintetização do cliente HTTP de interfaces anotadas). Tendo SomeClient
anotado a interface @FeignClient
, Feign gera a classe proxy de tempo de execução implementando essa interface. Quando algum componente Spring tenta autopreencher o bean do tipo SomeClient
, o Idea não reclama nenhum bean do tipo SomeClient
encontrado, pois não existe realmente nenhuma classe real no projeto e o Idea não é ensinado a entender a @FeignClient
anotação de nenhuma maneira.
Solução: anote a interface SomeClient
com @Component
. (No nosso caso, não usamos @FeignClient
anotação SomeClient
diretamente, antes usamos metanotação @OurProjectFeignClient
anotada @FeignClient
e a adição de @Component
anotação também funciona.)
@Component
à interface resolve o problema. Mas acho que essa não é a maneira correta ... Na minha opinião, isso é um bug no IntelliJ IDEA ou, para não ser tão difícil, o IntelliJ IDEA não está pronto para as versões mais recentes do Feign. Ele funciona sem @Component
versões falsas (onde @FeignClient
estava a anotação em org.springframework.cloud.netflix.feign
vez de org.springframework.cloud.openfeign
- talvez essa seja a causa do problema?). Você encontrou mais detalhes (talvez um ticket de bug) para isso?
@Component
) seja @FeignClient
do org.springframework.cloud.netflix.feign
pacote.
E uma última informação importante - adicione a ComponentScan
para que o aplicativo saiba tudo o que precisa ser conectado. Isso não é relevante no caso desta pergunta. No entanto, se não @autowiring
estiver sendo executado, é provável que seja a sua solução.
@Configuration
@ComponentScan(basePackages = {
"some_package",
})
public class someService {
O que você precisa fazer é adicionar
@ComponentScan("package/include/your/annotation/component")
no AppConfiguration.java
.
Como acho que o AppConfiguraion.java
pacote do seu é mais profundo que o pacote do componente de anotação (@Service, @Component ...),
tais como "package/include/your/annotation/component/deeper/config"
.
Eu tive um problema semelhante no meu aplicativo. Quando adicionei anotações, a marcação incorreta desapareceu.
@ContextConfiguration(classes = {...})
Estou usando esta anotação para ocultar esse erro quando ele aparece no IntelliJ v.14:
@SuppressWarnings("SpringJavaAutowiringInspection")
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
Para mim, a solução foi colocar @EnableAutoConfiguration
na classe Application sob a forma @SpringBootApplication
de sublinhar, porque é redundante. Exclua-o e pronto, todos os avisos sobre os grãos ausentes desaparecem! Primavera parva ...
Minha solução para esse problema no meu aplicativo de inicialização do Spring foi abrir o contexto do aplicativo do Spring e adicionar a classe manualmente para o bean com conexão automática ausente!
(acesse através do menu Estrutura do projeto ou janela da ferramenta Primavera ... editar "Contexto do aplicativo Primavera")
Portanto, em vez de SpringApplicationContext apenas conter minha configuração de mola ExampleApplication, ela também contém o Bean ausente:
SpringApplicationContext:
et voilà: A mensagem de erro desapareceu!
Ainda parece haver um bug no IntelliJ mais recente e está relacionado a um possível problema de armazenamento em cache?
Se você adicionar a anotação @Repository como mk321 mencionada acima, salve, remova a anotação e salve novamente, isso corrige o problema.
Eu só tinha que usar @EnableAutoConfiguration para resolvê-lo, no entanto, esse erro não teve impacto funcional.
Isso pode ser resolvido colocando @EnableAutoConfiguration na classe principal do aplicativo de inicialização por primavera.
Às vezes - no meu caso - a razão é uma importação errada. Acidentalmente importei
import org.jvnet.hk2.annotations.Service
ao invés de
import org.springframework.stereotype.Service
aceitando cegamente a primeira opção nas importações sugeridas pela Idea. Levei alguns minutos na primeira vez que aconteceu :-)
Surpreendentemente, um projeto orientado a Feign que foi executado com sucesso com o Eclipse não pôde ser executado no InteliJ. Quando o aplicativo foi iniciado, o InteliJ reclamou do cliente Feign que tentei injetar na camada serviceImpl dizendo: campo personRestClient (meu cliente Feign) em ... exigia um bean do tipo ... que não pôde ser encontrado. Considere definir um bean do tipo '....' em sua configuração.
Perdi muito tempo tentando entender o que está errado. Encontrei uma solução (para InteliJ) que não entendo completamente:
Ou escolha Eclipse :)
Use @AutoConfigureMockMvc para a classe de teste.
simples você tem que fazer 2 etapas
==>> change @Autowired to @Resource
IntelliJ IDEA Ultimate
Adicione sua classe principal ao IntelliJ Spring Application Context, por exemplo Application.java
File
-> Project Structure..
lado esquerdo: Configuração do projeto -> Módulos
lado direito: encontre na estrutura do seu pacote
Spring
e adicione+
Application.java