Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

[Bug] Erro APPLICATION FAILED TO START Parameter of constructor in (package controller) required a bean of type (package service)that could not be found.

Bom dia a todos

Eu fui separar o service do controller e deu esse erro:

APPLICATION FAILED TO START

Description:
Parameter 0 of constructor in br.com.alura.forum.controller.TopicoController required a bean of type 'br.com.alura.forum.service.TopicosService' that could not be found.

Action:

Consider defining a bean of type 'br.com.alura.forum.service.TopicosService' in your configuration.

Eu até vi outras soluções no fórum da Alura, mas era em java e a anotação que ele falava não existia no Kotlin.

Teve outra que funcionou ao colocar o service no mesmo package, mas acredito que isso não seja o ideal. packages que funcionaram:

package br.com.alura.forum.controller.service
e
package br.com.alura.forum.controller

O que eu posso fazer para que possa colocar o arquivo do service e controller em package diferente e ainda sim funcionar

Código do Controller:

package br.com.alura.forum.controller

import br.com.alura.forum.modelo.Topico
import br.com.alura.forum.service.TopicosService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import java.util.*

@RestController
@RequestMapping("/topicos")
class TopicoController (private val service: TopicosService){
    @GetMapping
    fun listar():List<Topico>{
        return service.listar()
    }
}

Código do Service:

package br.com.alura.forum.service

import br.com.alura.forum.modelo.Curso
import br.com.alura.forum.modelo.Topico
import br.com.alura.forum.modelo.Usuario
import org.springframework.stereotype.Service

@Service
class TopicosService {
    fun listar(): List<Topico> {
//topico oculto para não ocupar muito espaço
        return listOf(topico)
    }
}
6 respostas

Fala Murilo de boa ?

Cara tua classe/arquivo que sobe o spring boot está em qual pacote ? Essa classe/arquivo tem que estar sempre no nível mais alto, para que todos os niveis inferiores possam ser consumidos por ela, como se fosse uma arvore de componentes.

O ideial é estar no pacote package br.com.alura.forum

Eu entendo.

Mas na aula, o professor colocou a classe TopicoController no package: package br.com.alura.forum.controller e TopicosService no: package br.com.alura.forum.service, como pode ver no GitHub da aula 2

O que eu queria saber o que eu fiz de errado para o meu não funcionar e o dele sim e como que eu faco para funcionar mantendo esse mesmo package?

solução!

Isso tá certinho, tanto o controller quanto o service.

O ponto que to falando é do local onde voce deixou o arquivo :


@SpringBootApplication
class ForumApplication

fun main(args: Array<String>) {
    runApplication<ForumApplication>(*args)
}

Esse tem que estar na raiz do proejto

Obrigado, agora deu certo