Declaro un servicio en servicio de paquete como:

import a.b.c.d.soapapim.SoapApimMiddlewareService;

@Service
@EnableDefaultExceptionHandling
public class MyService{
    private final SoapApimMiddlewareService myService;

    public MyService(SoapApimMiddlewareService myService){
        this.myService = myService;   
    }

    public Response pullEvents(numEvents){
        myService.pullEvents(numEvents);
    }

}

SoapApimMiddlewareService es una dependencia en mi proyecto de arranque de primavera declarada en el pom.xml de mi proyecto en el paquete a.b.c.d.soapapim

En mi application.java:

@ComponentScan({"a.b.c.d.soapapim", "service", "scheduler"})
SpringBootApplication
@EnableScheduling
public class Application implements WebMvcConfigurer {´

    public static void main(String[] args){
        SpringApplication app = new SpringApplication(Application.class);
        app.setRegisterShutdownHook(false);
        app.run(args);
    }

}

También tengo un programador:

@Component
public class Scheduler {

    private MyService myService;

    @Scheduled(fixedRate = 1200)
    public void myScheduledTask(){
        myService.pullEvents(1);
    }
}

Estoy recibiendo el siguiente error:

UnsatisfiedDependencyException: Error al crear un bean con el nombre MyService No hay un bean calificado del tipo 'a.b.c.d.soapapim.SoapApimMiddlewareService'

No puedo anotar esa clase porque es una dependencia a la que no tengo acceso. Simplemente lo declaro como una dependencia del pom.xml de mi proyecto.

¿Cómo puedo incluir este bean en el contexto de mi aplicación de arranque de primavera?

1
JoaoFilipeClementeMartins 13 oct. 2019 a las 19:52

1 respuesta

La mejor respuesta

Puede declararlo como spring bean usando la anotación @Bean en la clase de configuración

@Bean
public SoapApimMiddlewareService soapApimMiddlewareService() {
    return new SoapApimMiddlewareService():
  }
1
Deadpool 13 oct. 2019 a las 16:55