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); } }