Spring bean является нулевым, даже если он заполняется в другом проекте - PullRequest
0 голосов
/ 02 января 2019

У меня есть два проекта: A и B. Я создаю bean-компонент в проекте A следующим образом:

@Configuration
public class ConnectorConfiguration {

    @Bean(name = "CON")
    public ConnectorRegistry connectorRegistry() {
        return new LocalConnectorRegistry();
    }
}

Затем в проекте B я добавляю данные в компонент следующим образом:

@Configuration
public class SomeClass {
    @Inject
    private ConnectorRegistry connectorRegistry;

    @Bean
    public Connector SomeClass Connector() {
        Connector connector = new BaseConnector(BLA, contextFactory);
        connectorRegistry.register(connector);
        return connector;
    }
}

и когда я возвращаюсь к проекту А, у меня есть этот класс:

@Service
@DependsOn("CON")
public class SomeWorker {

    @Autowired
    private ConnectorRegistry connectorRegistry;

но connectorRegistry здесь равно нулю, хотя я добавил к нему данные, и я знаю, что, посмотрев на график пружинных бинов, бобы находятся в зависимости, вот так: SomeWorker ----> CON <----- SomeClass

Так что если SomeClass и SomeWorker оба смотрят на один и тот же компонент, тогда он не должен быть нулевым. что мне здесь не хватает?

EDIT: В проекте A я вызываю SomeWorker через SpringBoot основной класс, как это, может быть, это связано с проблемой:

/**
 * Application entry point
 */
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@ComponentScan(value = "com.other.components")
public class MainApp
        extends MainAppSpringBootApplication {

    public MainApp() {
      super(SomeClass.class);
  }

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = new SpringApplicationBuilder(MainApp.class)
                .initializers(new ZooKeeperPropertiesApplicationContextInitializer())
                .run(args);        
    }
}
...