@Autowired @Service Bean es nula si bien configurado correctamente

Margaret:

Me sale este error durante el inicio de mi aplicación basada en la primavera de arranque 2.1.4:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [test.services.AlmConnectivity]: Constructor threw exception; nested exception is java.lang.NullPointerException
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:184) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1295) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
    ... 22 common frames omitted
Caused by: java.lang.NullPointerException: null
    at test.services.AlmConnectivity.initProxyBean(AlmConnectivity.java:43) ~[classes/:na]
    at test.services.AlmConnectivity.<init>(AlmConnectivity.java:30) ~[classes/:na]

La línea mencionada 43es la que comienza con proxy =:

@DependsOn({ "config", "cfg" })
private void initProxyBean() {
    System.err.println("Config: " + config);
    proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(config.getProxyHost(), config.getProxyPort()));
}

System.errgrabados también nulo. Como se puede ver Traté de dependencias de señal utilizando @DependsOn.

Estos son los (supongo) otras partes pertinentes de la clase:

@Service
public class AlmConnectivity {
    Logger log = LoggerFactory.getLogger(AlmConnectivity.class);

    @Autowired
    @Qualifier("config")
    Config config;

    private Proxy proxy;

    private OkHttpClient client;

    public AlmConnectivity() {
        initProxyBean();
        initClientBean(proxy);
    }

Porque prefiero nombres más cortos he usado @Qualifier, pero incluso si me salto esto y tomo el grano con su nombre completo configno funciona y estancias de configuración nula.

Esta es la clase de configuración:

@Component
public class Config {

    @NotNull
    @NotEmpty
    @Value("${proxy.host}")
    private String proxyHost = "i.am.desparate";

    @NotNull
    @NotEmpty
    @Value("${proxy.port}")
    private int proxyPort = 8090;

    public String getProxyHost() {
        return proxyHost;
    }

    public int getProxyPort() {
        return proxyPort;
    }
}

Mi clase principal lleva estas anotaciones:

@SpringBootApplication
@EnableScheduling
@Configuration
@ComponentScan
@EnableAutoConfiguration

(Los tres últimos fueron añadidas durante mis intentos para conseguir este funcionamiento)

Smutje:

Es posible que desee cambiar su comportamiento de ser llamado en el constructor de una

javax.annotation.PostConstruct

método anotado:

@Service
public class AlmConnectivity {

    Logger log = LoggerFactory.getLogger(AlmConnectivity.class);

    @Autowired
    @Qualifier("config")
    Config config;

    private Proxy proxy;

    private OkHttpClient client;

    @PostConstruct
    private void initProxyBean() {
        System.err.println("Config: " + config);
        proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(config.getProxyHost(), config.getProxyPort()));
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=333885&siteId=1
Recomendado
Clasificación