2016-05-31 31 views
5

Ho una domanda di base della molla di avvio annotato in questo modo:Primavera Boot - autowiring un DataSource Bean

@SpringBootApplication 
public class ApiApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(ApiApplication.class, args); 
    } 
} 

Ho le seguenti voci nel mio file application.properties:

spring.datasource.driver-class-name=org.postgresql.Driver 
spring.datasource.url=jdbc:postgresql://localhost:5432/db 
spring.datasource.username=dbuser 
spring.datasource.password=dbpassword 

dalla mia comprensione Primavera Boot dovrebbe essere in grado di autorizzare automaticamente un DataSource Bean da queste proprietà.

Tuttavia se provo:

@Autowired 
DataSource dataSource; 

ovunque nella mia applicazione (fi in file @Configuration), ottengo il seguente errore in IntelliJ:

"Impossibile autowire Nessun fagioli di. È stato trovato il tipo "DataSource". "

C'è qualcosa di ovvio che mi manchi che funzioni?

Ho un singolo DataSource.

+0

@EnableAutoConfiguration deve essere aggiunto anche alla parte superiore della classe principale. –

+2

'@ SpringBootApplication' presumibilmente aggiunge anche' @ EnableAutoConfiguration'. Ho provato ad aggiungerlo manualmente ma questo non ha corretto l'errore. – vtosh

+0

In tal caso, abilitare i registri di livello di debug per l'avvio a molla e verificare cosa succede al bean DataSource. –

risposta

1

Il bean effettivamente viene inizializzato correttamente. Questo è probabilmente solo un bug di tooltip IntelliJ.

L'aggiunta di @SuppressWarnings per nascondere il messaggio funzionerà senza ulteriori problemi.

+0

che è giusto, ha appena avuto lo stesso problema - anche in IntelliJ IDEA 2017.1.3 Build # IU-171.4424.56, costruito il 12 maggio 2017, questo esiste ancora. I bean sono cablati correttamente anche se IntelliJ avverte del conflitto – DevDio

2

Intelij apparentemente anche nel 2016.2 non supporta ancora l'annotazione @SpringBootApplication. Devi rimuovere l'annotazione @SpringBootApplication e sostituirla con le annotazioni @Configuration, @EnableAutoConfiguration e @ComponentScan o semplicemente ignorare gli errori.