your type that org not found entitymanagerfactory defining could consider bean java spring-boot

org - required a bean of type java lang string that could not be found



Considere definir un bean de tipo ''paquete'' en su configuración (14)

Básicamente, esto sucede cuando tiene su Solicitud de clase en "otro paquete". Por ejemplo:

com.server - Applicacion.class (<--this class have @ComponentScan) com.server.config - MongoConfig.class com.server.repository - UserRepository

Resuelvo el problema con esto en la clase Application.class

@SpringBootApplication @ComponentScan ({"com.server", "com.server.config"}) @EnableMongoRepositories ("com.server.repository") // this fix the problem

Otra forma menos elegante es: poner todas las clases de configuración en el mismo paquete.

Estoy teniendo el siguiente error:

*************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of method setApplicant in webService.controller.RequestController required a bean of type ''com.service.applicant.Applicant'' that could not be found. Action: Consider defining a bean of type ''com.service.applicant.Applicant'' in your configuration.

Nunca antes había visto este error, pero es extraño que @Autowire no funcione. Aquí está la estructura del proyecto:

Interfaz del solicitante

public interface Applicant { TApplicant findBySSN(String ssn) throws ServletException; void deleteByssn(String ssn) throws ServletException; void createApplicant(TApplicant tApplicant) throws ServletException; void updateApplicant(TApplicant tApplicant) throws ServletException; List<TApplicant> getAllApplicants() throws ServletException; }

SolicitanteImpl

@Service @Transactional public class ApplicantImpl implements Applicant { private static Log log = LogFactory.getLog(ApplicantImpl.class); private TApplicantRepository applicantRepo; @Override public List<TApplicant> getAllApplicants() throws ServletException { List<TApplicant> applicantList = applicantRepo.findAll(); return applicantList; } }

Ahora debería poder solo conectar automáticamente al solicitante y poder acceder, sin embargo, en este caso no funciona cuando lo llamo en mi @RestController:

@RestController public class RequestController extends LoggingAware { private Applicant applicant; @Autowired public void setApplicant(Applicant applicant){ this.applicant = applicant; } @RequestMapping(value="/", method = RequestMethod.GET) public String helloWorld() { try { List<TApplicant> applicantList = applicant.getAllApplicants(); for (TApplicant tApplicant : applicantList){ System.out.println("Name: "+tApplicant.getIndivName()+" SSN "+tApplicant.getIndSsn()); } return "home"; } catch (ServletException e) { e.printStackTrace(); } return "error"; } }

------------------------ ACTUALIZACIÓN 1 -----------------------

yo añadí

@SpringBootApplication @ComponentScan("module-service") public class WebServiceApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(WebServiceApplication.class); } public static void main(String[] args) { SpringApplication.run(WebServiceApplication.class, args); } }

y el error desapareció pero no pasó nada. Sin embargo, cuando comenté todo lo relacionado con el Applicant en el RestController antes de agregar @ComponentScan() , pude devolver una cadena a la UI , lo que significa que mi RestController estaba funcionando, ahora se está omitiendo. Yo feo Whitelabel Error Page ahora.

--------------------- ACTUALIZACIÓN 2 --------------------------- ---

Agregué el paquete base del bean del que se quejaba. Error lee:

*************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of method setApplicantRepo in com.service.applicant.ApplicantImpl required a bean of type ''com.delivery.service.request.repository.TApplicantRepository'' that could not be found. Action: Consider defining a bean of type ''com.delivery.request.request.repository.TApplicantRepository'' in your configuration.

@ComponentScan

@SpringBootApplication @ComponentScan({"com.delivery.service","com.delivery.request"}) public class WebServiceApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(WebServiceApplication.class); } public static void main(String[] args) { SpringApplication.run(WebServiceApplication.class, args); } }

---------------------------- Actualización 3 -------------------- -

agregando:

@SpringBootApplication @ComponentScan("com") public class WebServiceApplication extends SpringBootServletInitializer {

todavía se queja de mi clase ApplicantImpl que @Autowires mi repositorio TApplicantRepository en él.


Busqué una respuesta en línea, pero parece que no hay una solución adecuada para mi caso: al principio, todo funciona bien de la siguiente manera:

@Slf4j @Service @AllArgsConstructor(onConstructor = @__(@Autowired)) public class GroupService { private Repository repository; private Service service; }

Luego estoy tratando de agregar un mapa para almacenar algo en caché y se convierte en esto:

@Slf4j @Service @AllArgsConstructor(onConstructor = @__(@Autowired)) public class GroupService { private Repository repository; private Service service; Map<String, String> testMap; }

¡Auge!

Description: Parameter 4 of constructor in *.GroupService required a bean of type ''java.lang.String'' that could not be found. Action: Consider defining a bean of type ''java.lang.String'' in your configuration.

@AllArgsConstructor(onConstructor = @__(@Autowired)) y @Autowired para cada repository y service excepto Map<String, String> . Simplemente funciona como antes.

@Slf4j @Service public class SecurityGroupService { @Autowired private Repository repository; @Autowired private Service service; Map<String, String> testMap; }

Espero que esto pueda ser útil.


Creo que puede simplificarlo anotando su repositorio con @Repository, entonces Spring Framework lo habilitará automáticamente.


En mi caso tuve un terrible error. Puse @Service hasta la interfaz de servicio.

Para solucionarlo, puse @Service en la implementación del archivo de servicio y funcionó para mí.


En mi caso, estas dos opciones funcionaron.

  1. en //@ComponentScan ({"myapp", "myapp.resources","myapp.services"}) incluye también el paquete que contiene el Application.class en la lista, o

  2. Simplemente agregue @EnableAutoConfiguration ; reconoce automáticamente todos los frijoles de primavera.


En mi caso, este error aparece porque mi importación fue incorrecta, por ejemplo, usando spring, la importación aparece automáticamente:

import org.jvnet.hk2.annotations.Service;

pero necesitaba

import org.springframework.stereotype.Service;


Esto puede suceder si la clase @Service está marcada como abstracta.


Esto también puede suceder si está utilizando Lombok y agrega @RequiredArgsConstructor y @NonNull para los campos, pero algunos de sus campos no deben inyectarse en el constructor. Esta es solo una de las posibilidades para obtener el mismo error.

el parámetro 0 requería un bean de tipo MissingBeanName que no se pudo encontrar

En mi caso, el error me dijo en qué controlador estaba el problema, después de eliminar @NonNull la aplicación comenzó bien


Funcionó para mí después de agregar la anotación a continuación en la aplicación:

@ComponentScan({"com.seic.deliveryautomation.mapper"})

Estaba recibiendo el siguiente error:

"el parámetro 1 del constructor requiere un bean de tipo mapper que no se pudo encontrar:


Puede ser porque el proyecto se ha dividido en diferentes módulos.

@SpringBootApplication @ComponentScan({"com.delivery.request"}) @EntityScan("com.delivery.domain") @EnableJpaRepositories("com.delivery.repository") public class WebServiceApplication extends SpringBootServletInitializer {


Si un bean está en el mismo paquete en el que está @Autowired, nunca causará tal problema. Sin embargo, los beans no son accesibles desde diferentes paquetes por defecto. Para solucionar este problema, siga estos pasos:

  1. Importar siguiente en su clase principal:
    import org.springframework.context.annotation.ComponentScan;
  2. agregue anotaciones sobre su clase principal:

@ComponentScan(basePackages = {"your.company.domain.package"}) public class SpringExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringExampleApplication.class, args); } }


Su clase de solicitante no se escanea, al parecer. De forma predeterminada, se analizarán todos los paquetes que comiencen con la raíz como la clase donde ha puesto @SpringBootApplication .

supongamos que su clase main "WebServiceApplication" está en " com.service.something ", luego se com.service.something todos los componentes que se encuentran en " com.service.something " y no se escaneará " com.service.applicant ".

Puede reestructurar sus paquetes de modo que "WebServiceApplication" se encuentre en un paquete raíz y todos los demás componentes se conviertan en parte de ese paquete raíz. O puede incluir @SpringBootApplication(scanBasePackages={"com.service.something","com.service.application"}) etc., de modo que "TODOS" los componentes se escaneen e inicialicen en el contenedor de resorte.

Actualización basada en comentario

Si tiene varios módulos gestionados por maven / gradle, todas las necesidades de primavera son el paquete para escanear. Le dice a spring que escanee "com.module1" y tiene otro módulo que tiene su nombre de paquete raíz como "com.module2", esos componentes no serán escaneados. Incluso puede decirle a Spring que escanee "com", que luego escaneará todos los componentes en " com.module1. " Y " com.module2. " com.module2.


Hay una posibilidad ...
Es posible que le falte la anotación @Service , @Repository en sus respectivas clases de implementación.


@SpringBootApplication @MapperScan("com.developer.project.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }